Label multiline iOS di Pembuat antarmuka

131

Bagaimana saya bisa membuat UILabelpembangun antarmuka multiline untuk iOS? Saya mencoba UITextViewtetapi tidak sesuai dengan kebutuhan saya.

Bagaimana saya bisa menambahkan multiline (teks) pada label?

Samuli Lehtonen
sumber
Bisakah Anda jelaskan mengapa id tidak sesuai dengan kebutuhan Anda? TextView dengan read-only sama dengan label multiline.
Shreesh
Tampaknya tidak ada properti warna teks yang disorot.
Samuli Lehtonen
7
Untuk orang lain yang mengunjungi pertanyaan ini, jangan ikuti jawaban yang diterima dari pengaturan baris ke 5 atau n. Alih-alih mengaturnya ke 0 (Sortir tanpa batas). Lihat jawaban vijay di bawah ini.
GoodSp33d

Jawaban:

178

Anda dapat menggunakan numberOfLinesproperti yang mendefinisikan maksimum jumlah garis bisa dimiliki label. Secara default, ini 1. Menyetelnya 0berarti label akan memiliki garis yang tidak terbatas .

Anda dapat melakukannya dalam kode:

textLabel.numberOfLines = 5 // for example

Atau di Interface Builder:

akashivskyy
sumber
Saya mencoba, itu berfungsi ketika saya menulis label, tetapi ketika saya menekan enter untuk menerimanya hanya semua berjalan pada satu baris.
Samuli Lehtonen
3
Dan apa widthlabel Anda?
akashivskyy
8
Ok, saya mengerti sekarang, menambah tinggi, itu membuatnya. Terima kasih!
Samuli Lehtonen
Anda dapat mengatur Garis ke 0 untuk garis tidak terbatas.
paulmelnikow
2
Lihat juga jawaban ini yang menjelaskan cara mengetik label multi-jalur ke IB: stackoverflow.com/a/992511/893113
paulmelnikow
117

Tekan Control+ Enteruntuk menambahkan baris dalam UILabel di Interface Builder / Storyboard.

pengguna1233894
sumber
2
Terima kasih, itulah yang saya coba lakukan :)
mcont
Ini harus menjadi solusinya!
SunnySonic
14
Bagus Tapi "Q" tidak perlu kurasa
Rendel
1
@ Logika Logika tidak keluar dari Xcode ... Anda belum membaca dengan benar. Dia mengatakan CONTROL + Q + ENTER (dan bukan CMD + Q) .. Tapi Rendel benar hanya CONTROL + ENTER yang mencukupi di sini.
gaskbr
1
@ Logika itu tidak keluar dari Xcode ... Anda belum membaca dengan benar. Dia mengatakan CONTROL + Q + ENTER (dan bukan CMD + Q) .. Tapi Rendel benar hanya CONTROL + ENTER yang mencukupi di sini.
gaskbr
47

Terima kasih AppleVijay!

Juga untuk memanggil sizeToFit, seperti ini:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

Ketinggian akan dihitung secara otomatis.

Bogdan
sumber
11
Catatan: UILineBreakModeWordWrap sudah tidak digunakan lagi di iOS6. Gunakan [label setLineBreakMode: NSLineBreakWordWrapping]; sebagai gantinya.
John Feagans
5
Hilang "Oleh". label.lineBreakMode = NSLineBreakByWordWrapping
user1872384
1
gunakan NSLineBreakMode.ByWordWrapping alih-alih UILineBreakModeWordWrap untuk cepat
Deb
12

atur lebar label sesuai kebutuhan, lalu gunakan IB untuk mengatur jeda baris ke bungkus kata

atau gunakan dengan kode seperti ini

Saya menemukan solusinya.

Anda hanya perlu menambahkan kode berikut:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
Vijay-Apple-Dev.blogspot.com
sumber
5

Tetapkan jumlah baris nol untuk informasi teks dinamis, ini akan berguna ketika teks Anda bervariasi.

Secara programatis (Cepat 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

Menggunakan Inetrface Builder

masukkan deskripsi gambar di sini

Catatan: Tidak perlu diatur Minimum Font Scale, tetapi menyenangkan untuk memiliki faktor skala minimum untuk memasukkan teks ke dalam bingkai label.

Krunal
sumber
2

Jumlah garis terlihat di IB dengan bidang UILabel Biasa menetapkan garis sebagai 0. Ini akan membuat beberapa baris sesuai ruang yang disediakan untuk label.

Siddhant
sumber
1

Di iOS7 (Xcode5) Anda harus mengatur garis UILabel ke 0untuk input berganda yang tak terbatas di storyboard.
Yang paling penting adalah mengatur agar height of the UILabelbisa menahan jalur input yang akan Anda atur.

Tukang
sumber
0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};
Tanvi Jain
sumber
0

Jika Anda menetapkan properti numberOfLines sama dengan 0, label akan secara otomatis menyesuaikan dengan jumlah baris yang diperlukan dari teks yang diberikan.

Pablo Marrufo
sumber
0

Saya telah berjuang dengan ini sejak lama. Saya hanya ingin teks label saya muncul di baris kedua. Tapi apa pun yang saya lakukan, itu hanya akan meluap kotak UILabel. Bagi saya, mengubah inspektur ukuran autoresizing bekerja. Memperbaiki sederhana.

Mungkin seseorang mungkin merasa terbantu jika mencari sesuatu yang serupa.

Harshal Karande
sumber
-2

Untuk X-Code 7.2

  1. - Pilih UILabel

  2. - Atribut inspektur

  3. - Teks - Pilih Dikaitkan

Setelah ini, Anda dapat melihat beberapa atribut lagi yang dapat Anda tambahkan ke label Anda, di mana Anda juga dapat menemukan jumlah Garis . Yang membuat label Anda multiline .

Gambar X-Code untuk UILabel multiline

kode kode
sumber
Jumlah garis terlihat dalam IB dengan label UIL Biasa.
Graham Lea