UILabel長度自適應內部字符串NSString紀錄

一:ios 8 label根據字數多少改變高度

uilabel *label = [[uilable alloc]initWithFrame:frame];
label.numberOfLines = 0;//任意行數
//以下方法可以插入行間距。如果用label.text就不能插入行距,很難看。
NSString text = @"xxxx";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
//注意,每一行的行間距分兩部分,topSpacing和bottomSpacing。
[paragraphStyle setLineSpacing:3.f];//調整行間距
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
self.attributedText = attributedString;//ios 6
CGSize size = [self sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];
CGRect frame = label.frame;
frame.size.height = size.height;
[label setFrame:frame];
//大功告成。在固定label寬度條件下,自動調整行數、高度

二:根據字符串的字體大小等來取顯示效果的size

//detailSize.width,和detailSize.height就是你想要的。
CGSize detailSize = [@"你的字符串" sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(200, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

三:UILabel自適應高度和自動換行

//初始化label  
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];  
//設置自動行數與字符換行  
[label setNumberOfLines:0];  
label.lineBreakMode = UILineBreakModeWordWrap;   
// 測試字串  
NSString *s = @"這是一個測試!!!adsfsaf時發生發勿忘我勿忘我勿忘我勿忘我勿忘我阿阿阿阿阿阿阿阿阿阿阿阿阿啊00000000阿什頓。。。";  
UIFont *font = [UIFont fontWithName:@"Arial" size:12];  
//設置一個行高上限  
CGSize size = CGSizeMake(320,2000);  
//計算實際frame大小,並將label的frame變成實際大小  
CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];  
[label setFrame:CGRectMake:(0,0, labelsize.width, labelsize.height)];
發佈了33 篇原創文章 · 獲贊 8 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章