該段代碼做用(iOS開發)字體
一、根據文本動態計算label須要的高度spa
二、能夠添加最多顯示多少行 .net
例如:在論壇回覆裏邊有「點擊查看全文功能」 默認的最多隻顯示3行 點擊查看全文時候 >顯示全文 此類的 狀況下 能夠使用 blog
此段代碼算是動態計算label高度的升級版吧開發
//建立label
NSString * labelStr = @"你好,這是UILabel的例如:在論壇回覆裏邊有「點擊查看全文功能」 默認的最多隻顯示3行 點擊查看全文時候 >顯示全文 此類的 狀況下 能夠使用 ";
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 160, 200, 14)];
label.font = [UIFont systemFontOfSize:11];
label.backgroundColor = [UIColor orangeColor];
label.text = labelStr;
label.numberOfLines = 0;
[self.view addSubview:label];源碼
[self dynamicCalculationLabelHight:label];it
------------ 分割線 ------------------io
- (void)dynamicCalculationLabelHight:(UILabel*) label{
//有源碼在 有需求自行微調便可
NSInteger n = 6;//最多顯示的行數
CGSize labelSize = {0, 0};
labelSize = [self ZFYtextHeightFromTextString:label.text width:label.frame.size.width fontSize:label.font.pointSize];
// NSLog(@"%f",label.font.pointSize);//獲取 label的字體大小
//NSLog(@"%f",label.font.lineHeight);//獲取label的在不一樣字體下的時候所須要的行高
//NSLog(@"%f",labelSize.height);//label計算行高
CGFloat rate = label.font.lineHeight; //每一行須要的高度
CGRect frame= label.frame;
if (labelSize.height>rate*n) {
frame.size.height = rate*n;
}else{
frame.size.height = labelSize.height;
}
label.frame = frame;
}ast
//計算 label須要的寬度和高度方法iOS開發
-(CGSize)ZFYtextHeightFromTextString:(NSString *)text width:(CGFloat)textWidth fontSize:(CGFloat)size{
//計算 label須要的寬度和高度
NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:size]};
CGRect rect = [text boundingRectWithSize:CGSizeMake(textWidth, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
CGSize size1 = [text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:size]}];
return CGSizeMake(size1.width, rect.size.height);
}
轉載請註明出處http://my.oschina.net/u/2523541/blog/676724
若是感受寫的不錯麻煩關注一下
對以上代碼有疑問能夠留言告訴我