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.

Codezy
sumber

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.

Kendall Helmstetter Gelner
sumber
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.

Greg
sumber
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)

Nathan
sumber
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

Naishta
sumber
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