UILabel - Wordwrap text


150

Apakah ada cara untuk memiliki label wordwrap text sesuai kebutuhan? Saya memiliki jeda baris yang diatur ke bungkus kata dan labelnya cukup tinggi untuk dua baris, tetapi tampaknya hanya akan dibungkus dengan jeda baris. Apakah saya harus menambahkan jeda baris untuk membuatnya terbungkus dengan benar? Saya hanya ingin membungkusnya jika tidak bisa masuk secara horizontal.

Jawaban:


301

Jika Anda menetapkan numberOfLineske 0 (dan label ke bungkus kata), label akan secara otomatis membungkus dan menggunakan sebanyak mungkin baris yang diperlukan.

Jika Anda mengedit UILabeldalam IB, Anda dapat memasukkan beberapa baris teks dengan menekan option+ return untuk mendapatkan jeda baris - returnsendirian akan selesai mengedit.


124
Untuk mengklarifikasi untuk noobs seperti saya, ini akan menjadi: cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
Brian Moeskau

46
Di iOS 6 dan yang lebih baru, gunakan NSLineBreakByWordWrapping, bukan UILineBreakModeWordWrap.
Aaron Brager

3
Anda mungkin juga membutuhkan yang berikut ini: label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
William Grand

6
label.lineBreakMode = .ByWordWrappingdan label.numberOfLines = 0dengan cepat
AFraser

9
Bagi siapa pun yang tidak jelas (seperti saya): UILabel harus memiliki semacam batasan pada lebarnya (baik dari batasan lebar aktual atau batasan margin); kalau tidak, itu tidak akan membungkus.
jcady

27

UILabelmemiliki properti lineBreakModeyang dapat Anda atur sesuai kebutuhan Anda.


11
"Saya memiliki jeda baris yang diatur ke bungkus kata". Ini hanya membungkus pada jeda baris yang sebenarnya, itu tidak akan otomatis putus begitu lama.
Codezy

19

Di Swift Anda akan melakukannya seperti ini:

    label.lineBreakMode = NSLineBreakMode.ByWordWrapping
    label.numberOfLines = 0

(Perhatikan bahwa cara kerja konstanta lineBreakMode berbeda dengan di ObjC)


Ingin menguraikan perbedaannya?
Mike

Saya pikir saya maksudkan saja bahwa penamaannya berbeda. Itu mungkin telah berubah lagi di swift3
Nathan

Mode line break harus diatur ke kata wrapping sebagai default
MobileMon

@MobileMonin pengalaman saya yang tidak selalu terjadi. Mungkin IB mengubahnya dalam beberapa keadaan?
Nathan

label.lineBreakMode = NSLineBreakByWordWrapping di Obj C
Nupur Sharma

2

Xcode 10, Swift 4

Membungkus Teks untuk label juga dapat dilakukan di Storyboard dengan memilih Label, dan menggunakan Attributes Inspector.

Baris = 0 Linebreak = Pembungkus Kata

masukkan deskripsi gambar di sini


2
Menggunakan label branBrand-New, langsung menambahkannya ke tampilan, ini masih menghasilkan label single-line (dengan lebar lebih besar dari lebar ponsel) untuk saya, meskipun menetapkan garis ke 0 dan linebreak ke Word Wrap. Apakah ada pengaturan lain yang diperlukan? Apakah saya perlu melampirkan kode tambahan?
phihag
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.