Apakah ada cara untuk memiliki beberapa baris teks dalam UILabel
seperti dalam UITextView
atau saya harus menggunakan kedua bukan?
Saya menemukan solusi.
Satu hanya harus menambahkan kode berikut:
// Swift
textLabel.lineBreakMode = .ByWordWrapping // or NSLineBreakMode.ByWordWrapping
textLabel.numberOfLines = 0
// For Swift >= 3
textLabel.lineBreakMode = .byWordWrapping // notice the 'b' instead of 'B'
textLabel.numberOfLines = 0
// Objective-C
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
// C# (Xamarin.iOS)
textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;
Dipulihkan tua menjawab (untuk referensi dan devs bersedia untuk mendukung iOS di bawah ini 6.0):
textLabel.lineBreakMode = UILineBreakModeWordWrap;
textLabel.numberOfLines = 0;
Di sisi: baik enum nilai-nilai hasil untuk 0
pula.
Di IB, mengatur jumlah baris ke 0 (tidak terbatas memungkinkan garis)
Ketika mengetik di dalam kolom teks menggunakan IB, gunakan "alt-kembali" untuk menyisipkan kembali dan pergi ke baris berikutnya (atau anda dapat menyalin teks yang sudah dipisahkan oleh garis-garis).
Solusi terbaik yang saya telah menemukan (untuk tidak frustasi masalah yang seharusnya diselesaikan dalam framework) serupa dengan vaychick's.
Hanya mengatur jumlah baris ke 0 di salah satu IB atau kode
myLabel.numberOfLines = 0;
Ini akan menampilkan garis-garis yang diperlukan tapi akan memindahkan label sehingga di tengah secara horizontal (sehingga 1 baris dan 3 baris label yang selaras dalam posisi horisontal). Untuk memperbaiki kesalahan yang menambahkan:
CGRect currentFrame = myLabel.frame;
CGSize max = CGSizeMake(myLabel.frame.size.width, 500);
CGSize expected = [myString sizeWithFont:myLabel.font constrainedToSize:max lineBreakMode:myLabel.lineBreakMode];
currentFrame.size.height = expected.height;
myLabel.frame = currentFrame;
Gunakan ini untuk memiliki beberapa baris teks dalam UILabel
:
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
Swift:
textLabel.lineBreakMode = .byWordWrapping
textLabel.numberOfLines = 0
textLabel.lineBreakMode = UILineBreakModeWordWrap;
textLabel.numberOfLines = 0;
Solusi di atas tidak't bekerja dalam kasus saya. I'm lakukan seperti ini:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// ...
CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0] constrainedToSize:CGSizeMake(240.0, 480.0) lineBreakMode:UILineBreakModeWordWrap];
return size.height + 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
// ...
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Georgia-Bold" size:18.0];
}
// ...
UILabel *textLabel = [cell textLabel];
CGSize size = [text sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0]
constrainedToSize:CGSizeMake(240.0, 480.0)
lineBreakMode:UILineBreakModeWordWrap];
cell.textLabel.frame = CGRectMake(0, 0, size.width + 20, size.height + 20);
//...
}
Swift 3
Mengatur jumlah garis nol untuk dynamic text informasi, ini akan berguna untuk menyesuaikan teks.
var label = UILabel()
let stringValue = "A label\nwith\nmultiline text."
label.text = stringValue
label.numberOfLines = 0
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
Coba gunakan ini:
lblName.numberOfLines = 0;
[lblName sizeToFit];
UILabel *helpLabel = [[UILabel alloc] init];
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:label];
helpLabel.attributedText = attrString;
// helpLabel.text = label;
helpLabel.textAlignment = NSTextAlignmentCenter;
helpLabel.lineBreakMode = NSLineBreakByWordWrapping;
helpLabel.numberOfLines = 0;
Untuk beberapa alasan yang tidak bekerja untuk saya di iOS 6 tidak yakin mengapa. Mencoba dengan dan tanpa dikaitkan teks. Saran.
anda harus mencoba ini:
-(CGFloat)dynamicLblHeight:(UILabel *)lbl
{
CGFloat lblWidth = lbl.frame.size.width;
CGRect lblTextSize = [lbl.text boundingRectWithSize:CGSizeMake(lblWidth, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:lbl.font}
context:nil];
return lblTextSize.size.height;
}
Hal-hal ini membantu saya
Perubahan sifat ini dari UILabel
label.numberOfLines = 0;
label.adjustsFontSizeToFitWidth = NO;
label.lineBreakMode = NSLineBreakByWordWrapping;
Dan saat memberikan input String menggunakan \n untuk menampilkan kata yang berbeda dalam baris yang berbeda.
Contoh :
NSString *message = @"This \n is \n a demo \n message for \n stackoverflow" ;
Anda dapat melakukannya melalui Storyboard juga:
Metode 1:
extension UILabel {//Write this extension after close brackets of your class
func lblFunction() {
numberOfLines = 0
lineBreakMode = .byWordWrapping//If you want word wraping
//OR
lineBreakMode = .byCharWrapping//If you want character wraping
}
}
Sekarang hanya seperti ini
myLbl.lblFunction()//Replace your label name
EX:
Import UIKit
class MyClassName: UIViewController {//For example this is your class.
override func viewDidLoad() {
super.viewDidLoad()
myLbl.lblFunction()//Replace your label name
}
}//After close of your class write this extension.
extension UILabel {//Write this extension after close brackets of your class
func lblFunction() {
numberOfLines = 0
lineBreakMode = .byWordWrapping//If you want word wraping
//OR
lineBreakMode = .byCharWrapping//If you want character wraping
}
}
Metode 2:
Pemrograman
yourLabel.numberOfLines = 0
yourLabel.lineBreakMode = .byWordWrapping//If you want word wraping
//OR
yourLabel.lineBreakMode = .byCharWrapping//If you want character wraping
Metode 3:
Melalui Story board
Untuk menampilkan beberapa baris set 0(Nol), ini akan menampilkan lebih dari satu baris di label.
Jika anda ingin menampilkan n baris, set n.
Lihat di bawah layar.
Jika anda ingin mengatur ukuran font minimum untuk label Klik penciutan otomatis dan Pilih pilihan Ukuran Font Minimum
Lihat di bawah layar
Berikut mengatur ukuran huruf minimum
EX: 9 (Dalam gambar ini)
Jika label anda mendapatkan lebih banyak teks pada saat itu anda teks label akan menyusut upto 9
Ditetapkan di bawah baik dalam kode atau dalam storyboard sendiri
Label.lineBreakMode = NSLineBreakByWordWrapping; Label.numberOfLines = 0;
dan silakan don't lupa untuk mengatur kiri, kanan, atas dan bawah kendala untuk label jika tidak maka tidak't bekerja.