Gunakan \n
seperti yang Anda gunakan dalam string Anda.
Atur numberOfLines ke 0 untuk memungkinkan sejumlah baris.
label.numberOfLines = 0;
Perbarui bingkai label agar sesuai dengan ukuran teks yang digunakan sizeWithFont:
. Jika Anda tidak melakukan ini, teks Anda akan terpusat vertikal atau terpotong.
UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
constrainedToSize:label.frame.size
lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
Pembaruan: Penggantian untuk usang
sizeWithFont:constrainedToSize:lineBreakMode:
Referensi, Penggantian untuk ukuran yang sudah usangWithFont: di iOS 7?
CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
UILabel
tidak memilikiorigin
atausize
properti pada iOS? Mungkin seharusnyalabel.frame.origin.x
dll.Gunakan opsi-kembali saat mengetik di kotak kecil di Interface Builder untuk memasukkan umpan baris (\ n). Dalam atribut Label Pembangun Antarmuka, set # Lines = 0.
Pilih label dan kemudian ubah properti Lines ke 0 seperti pada gambar di atas, dan kemudian gunakan \ n dalam string Anda untuk jeda baris.
sumber
Jika Anda membaca string dari file XML, baris break
\n
di string ini tidak akan berfungsi dalamUILabel
teks. Tidak\n
diuraikan untuk istirahat baris.Berikut adalah sedikit trik untuk mengatasi masalah ini:
Jadi, Anda harus mengganti bagian yang tidak diuraikan
\n
dalam string Anda dengan yang diuraikan\n
dalam hardcodeNSString
.Berikut adalah pengaturan label saya yang lain:
Yang paling penting adalah mengatur
numberOfLines
ke0
(= jumlah garis dalam label yang tidak terbatas).Tidak tahu mengapa Apple memilih untuk tidak menguraikan
\n
string yang dibaca dari XML?Semoga ini membantu.
sumber
\n
ketika mendapatkan string dari Parse.com (saya kira itu juga akan terjadi ketika mendapatkan string dari API lain)Di pembuat antarmuka, Anda dapat menggunakan Ctrl+ Enteruntuk menyisipkan
/n
ke posisi yang Anda inginkan. Cara ini bisa menerapkan situasi berikutaaa
aaaaaaa
sumber
Anda harus mengatur
numberOfLines
properti diUILabel
. Standarnya adalah 1 , jika Anda menetapkan ke 0 akan menghapus semua batas.sumber
Penting untuk dicatat
\n
(backslash) daripada/n
.sumber
Di Swift 2.2,> iOS 8
Saya telah menetapkan Lines = 0 di Storyboard, di bawah Attribute Inspector dan menautkan outlet referensi ke label. Kemudian gunakan di controller seperti ini:
sumber
Lakukan saja seperti ini
sumber
// Jangan lupa untuk mengatur numberOfLines ke nol
sumber
Pada Xcode 6, Anda bisa menggunakan \ n bahkan di dalam string saat menggunakan bungkus kata. Itu akan berhasil. Jadi misalnya:
sumber
Jika Anda menggunakan
UILabel
Anda harus ingat bahwa pengaturan default adalah 1 baris, jadi tidak masalah berapa banyak jeda yang Anda tambahkan (\n
atau\r
), Anda perlu memastikan itu disetel ke lebih dari satu baris sehingga dapat diizinkan untuk menambahkan lebih banyak garis.Salah satu alternatif adalah menggunakan
UITextView
yang benar-benar dimaksudkan untuk multilines.Anda dapat dengan mudah mencapai ini di bagian atribut XCode dari UILabel, lihat tangkapan layar:
sumber
Bagi Anda yang menginginkan solusi mudah, lakukan hal berikut dalam kotak input Label teks:
Pastikan garis angka Anda diatur ke 0.
Alt + Enter
(Alt adalah kunci pilihan Anda)
Bersulang!
sumber
Hanya menggunakan
label.numberOfLines = 0;
sumber
Dalam kasus saya juga \ n tidak berfungsi, saya memperbaiki masalah dengan menjaga jumlah baris menjadi 0 dan menyalin dan menempelkan teks dengan baris baru itu sendiri sebagai contoh alih-alih Hello \ n World yang saya tempel
di pembangun antarmuka.
sumber
Di xCode 11, Swift 5
\n
berfungsi dengan baik, coba kode di bawah ini:sumber
sumber
Untuk orang lain yang mungkin memiliki masalah dengan
sizeWithFont:constrainedToSize:lineBreakMode:
atau siapa pun yang beralih ke ios8 (metode ini sudah usang pada ios7), saya menyesuaikan tinggi badan saya dengan menggunakansizeToFit
sebagai gantinya.sumber
sumber
Tampaknya salah bagi saya untuk mengubah ukuran bingkai label terutama saat menggunakan autolayout. Menggunakan metode appendFormat tampaknya lebih tepat. Ini contoh saya:
sumber
Jika Anda menyetel properti UILable Anda dari Plain ke Attributed ... UILabel akan menampung teks multiline, tidak peduli berapa banyak paragraf sepanjang panjang dan lebar UILabel Anda diatur agar sesuai dengan area layar tempat Anda ingin menampilkan teks tersebut.
sumber
Saya telah menghadapi masalah yang sama, dan inilah cara saya memecahkan masalah. Semoga ini bermanfaat bagi seseorang.
// Swift 2
// Objective-C
// C # (Xamarin.iOS)
sumber