一: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)];