实现自适应高度的 UITableViewCell 或 UILabel
Author: fallhunter
摘自:http://www.fallhunter.com/p/10140
在iphone开发中处理table时常常会有这样的问题,table中cell的高度不是固定的,而是是根据其中的内容不同而不同的。对与这种情况,sdk本身并没有很好的支持,经过一翻摸索,发现大家通常的做法都是在实现 heightForRowAtIndexPath 方法时,根据内容计算出来显示的高度。
幸运的是,nsstring内置了几个好用的函数可以方便的计算出来字符串被现实出来时占有的屏幕高度:
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode; - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode; - (CGSize)sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode;
参考资料
http://www.raddonline.com/blogs/geek-journal/iphone-sdk-resizing-a-uitableviewcell-to-hold-variable-amounts-of-text/
http://www.maxhorvath.com/2009/01/how-to-make-uilabel-uitableviewcell-to-have-a-dynamic-height.html
http://blog.sallarp.com/iphone-uilabel-multiline-dynamic-height/