该段代码作用(iOS开发)
1、根据文本动态计算label需要的高度
2、可以添加最多显示多少行
例如:在论坛回复里边有“点击查看全文功能” 默认的最多只显示3行 点击查看全文时候 >显示全文 此类的 情况下 可以使用
此段代码算是动态计算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];
———— 分割线 ——————
– (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;
}
//计算 label需要的宽度和高度方法
-(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
如果感觉写的不错麻烦关注一下
对以上代码有疑问可以留言告诉我