UITableViewCell 动态高度计算

平时的开发中我们打交道最多的的可能就是UITableVIew了,那今天我们就总结下其动态显示高度的多种解决方法

Method 1 - iOS 8为我们提供的方法

self.tableView.rowHeight = UITableViewAutomaticDimension;
   
或者我们可以实现返回高度的代理方法
   
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
   return UITableViewAutomaticDimension;
}

Method 2 - systemLayoutSizeFittingSize

 CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
 return 1  + size.height;   
 
 

如果说我们的UILable要多行显示的话要设置numberOfLines等于0,
xib的话还要设置UIlable的preferredMaxLayoutWidth

Method 3 - sizeWithFont

- (CGSize)sizeWithFont:(UIFont *)font 
    constrainedToSize:(CGSize)size      
        lineBreakMode:(NSLineBreakMode)lineBreakMode         

由于该方法在iOS7之后已经弃用我们可以用其替代方法来计算字符串的高度

Method 4 - 第三方库

大家应该熟知早前在百度知道团队的哥们的一个库UITableView-FDTemplateLayoutCell(runtime + method swizzing实现)

详情请参考Demo-https://github.com/LargeShrimp/UITableViewCellDynamicHeight

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容