IOS动态获取文本的高度--自适应文本宽度、高度Textview

+ (float) heightForString:(NSString *)value fontSize:(float)fontSize andWidth:(float)width 
{ 
UITextView *detailTextView = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, width, 0)]; 
detailTextView.font = [UIFont systemFontOfSize:fontSize]; 
detailTextView.text = value; 
CGSize deSize = [detailTextView sizeThatFits:CGSizeMake(width,CGFLOAT_MAX)]; 
return deSize.height; 
} 

UILabel试一下, 配合

CGSize size = [strText sizeWithFont: textView.font constrainedToSize:constraintlineBreakMode:UILineBreakModeWordWrap];

这种方式也可以得正常的显示值, (注意:在使用UILabel来时,计算文字高度时, 不需要像上面第一部分代码中搞一个8 padding)
经验证:

sizeWithFont这个方法貌似确实是针对UILabel的,如果用UILabel来显示,其计算出来的高度和实际高度是吻合的。但是需要注意的是UILabel的文字内容和UILabel的宽度几乎是重合的,这会让人觉得文字太过于帖边了,可以考虑设置其contentInset之类来处理,不过这个是另一个问题了。而UITextView则不会太帖边,且行间距较大,适合显示。 估计UILabel应该也可以设置其行间距和段间距的。

你可能感兴趣的:(IOS动态获取文本的高度--自适应文本宽度、高度Textview)