实现自适应高度的 UITableViewCell 或 UILabel

来源:互联网 发布:卖家淘宝客教程 编辑:程序博客网 时间:2024/05/23 19:19

实现自适应高度的 UITableViewCell 或 UILabel

在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;

  1. UIFont *font = [UIFont systemFontOfSize:12];  
  2. CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(150.0f, 1000.0f) lineBreakMode:UILineBreakModeCharacterWrap];  

 获取字符串在指定的size内(宽度超过150,则换行)所需的的实际高度和宽度.

将获取的宽度和高度用于UILabel