Bagaimana cara mengubah celah antar baris (spasi baris) dalam multiline UILabel
?
sumber
Bagaimana cara mengubah celah antar baris (spasi baris) dalam multiline UILabel
?
Sunting: Tampaknya NSAttributedString
akan melakukannya, di iOS 6 dan lebih baru. Daripada menggunakan NSString
untuk menyetel teks label, buat NSAttributedString
, setel atribut di atasnya, lalu setel sebagai .attributedText
di label. Kode yang Anda inginkan akan menjadi seperti ini:
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"Sample text"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:24];
[attrString addAttribute:NSParagraphStyleAttributeName
value:style
range:NSMakeRange(0, strLength)];
uiLabel.attributedText = attrString;
AttributedStringWithString tua NSAttributedString ini melakukan hal yang sama, tapi sekarang yang sedang ditinggalkan.
Untuk alasan historis, inilah jawaban asli saya:
Jawaban singkatnya: Anda tidak bisa. Untuk mengubah jarak antar baris teks, Anda harus membuat subkelas UILabel
dan menggulung sendiri drawTextInRect
, membuat beberapa label, atau menggunakan font yang berbeda (mungkin yang diedit untuk tinggi baris tertentu, lihat jawaban Phillipe).
Jawaban panjang: Dalam dunia cetak dan online, spasi antar baris teks dikenal sebagai "leading" (berima dengan 'heading', dan berasal dari logam utama yang digunakan puluhan tahun lalu). Memimpin adalah properti hanya-baca UIFont
, yang tidak digunakan lagi di 4.0 dan diganti oleh lineHeight
. Sejauh yang saya tahu, tidak ada cara untuk membuat font dengan sekumpulan parameter tertentu seperti lineHeight
; Anda mendapatkan font sistem dan font khusus apa pun yang Anda tambahkan, tetapi tidak dapat men-tweaknya setelah diinstal.
Tidak ada parameter spasi di UILabel
juga.
Saya tidak terlalu senang dengan UILabel
perilaku apa adanya, jadi saya sarankan untuk menulis subkelas Anda sendiri atau menggunakan perpustakaan pihak ketiga. Itu akan membuat perilaku tidak bergantung pada pilihan font Anda dan menjadi solusi yang paling dapat digunakan kembali.
Saya berharap ada adalah lebih banyak fleksibilitas dalam UILabel
, dan saya akan senang untuk menjadi terbukti salah!
Mulai di ios 6 Anda dapat mengatur string yang diatribusikan di UILabel:
sumber
AttributedString
menonaktifkan misalnya perataan teks label, jadi Anda harus menambahkannya ke gaya paragraf.Anda dapat mengontrol spasi baris di storyboard:
pertanyaan duplikat
sumber
Dari Pembuat Antarmuka:
Secara terprogram:
Cepat 4
Menggunakan ekstensi label
Sekarang fungsi ekstensi panggilan
Atau menggunakan contoh label (Cukup salin & jalankan kode ini untuk melihat hasilnya)
Cepat 3
sumber
Solusi saya adalah menambal file font itu sendiri dan memperbaiki tinggi barisnya dengan pasti. http://mbauman.net/geek/2009/03/15/minor-truetype-font-editing-on-a-mac/
Saya harus memodifikasi 'lineGap', 'ascender', 'descender' di blok 'hhea' (seperti dalam contoh blog).
sumber
Orang ini membuat kelas untuk mendapatkan tinggi baris (tanpa menggunakan CoreText, sebagai pustaka MTLabel): https://github.com/LemonCake/MSLabel
sumber
Hal terbaik yang saya temukan adalah: https://github.com/mattt/TTTAttributedLabel
Ini adalah subkelas UILabel jadi Anda bisa langsung memasukkannya, lalu mengubah tinggi baris:
sumber
Saya menemukan Perpustakaan Pihak Ketiga Seperti ini:
https://github.com/Tuszy/MTLabel
Menjadi solusi termudah.
sumber
Berikut beberapa kode cepat bagi Anda untuk mengatur spasi baris secara terprogram
sumber
Tentu saja, jawaban Mike tidak berfungsi jika Anda meneruskan string secara terprogram. Dalam hal ini Anda perlu meneruskan string yang diatribusikan dan mengubah gayanya.
sumber