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?


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:


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.


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.


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;

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.


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.


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.


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};

0

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


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.


-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


Jumlah garis terlihat dalam IB dengan label UIL Biasa.
Graham Lea
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.