TableView自适应高度

UITableView高度设置的方式大概是一下几种,这里会主要提到第三种estimatedRowHeight 自适应高度

rowHeight方式

UITableView询问高度的方式有两种
一种是针对所有的Cell具有固定高度的情况

self.mainTable.rowHeight = 88;

另一种方式就是实现 UITableViewDelegate 中的针对每一个Cell进行单独设置

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
     return 88;
}
需要注意的是,实现了这个方法后,rowHeight 的设置将无效。所以,这个方法适用于具有多种 cell 高度的 UITableView。

estimatedRowHeight

我们知道,UITableView 是个 UIScrollView,就像平时使用 UIScrollView 一样,加载时指定 contentSize 后它才能根据自己的 bounds、contentInset、contentOffset 等属性共同决定是否可以滑动以及滚动条的长度。而 UITableView 在一开始并不知道自己会被填充多少内容,于是询问 data source 个数和创建 cell,同时询问 delegate 这些 cell 应该显示的高度,这就造成它在加载的时候浪费了多余的计算在屏幕外边的 cell 上

种类不同的 cell,我们依然可以使用简单的 estimatedRowHeight 属性赋值,只要整体估算值接近就可以,比如大概有一半 cell 高度是 44, 一半 cell 高度是 88, 那就可以估算一个 66,基本符合预期。

//给tablView添加着两句配合好约束就再也不用计算高度了
self.mianTableView.estimatedRowHeight = 213;
self.mianTableView.rowHeight = UITableViewAutomaticDimension;

注意问题

  1. 当lable高度不确定的时候约束的设置,需要设置一个最低高度,当然lines也要设置为0
    image.png

    2.当Cell上需要用到一个自定义的空间时,需要手动在.m里面添加这个控件该如何设置约束
    解决这个的方式类似于lable的,首先在Cell里面添加一个BottomView为这个控件占好位置,设置好这个Bottomview的上下左右以及最小高度
    image.png

    然后在cell.m里面手动创建这个控件添加到这个BottomView上,通过代码手动设置这个控件的约束,将这个BootomVIew给撑开
    image.png

    结果:
    image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天在用swift的时候用到了cell的自适应高度,本来打算运用oc的方法,然而却发现木有用,于是在网上各种翻找,...
    前端杜若阅读 5,222评论 0 0
  • 我们在上一篇《通过代码自定义不等高cell》中学习了tableView的相关知识,本文将在上文的基础上,利用sto...
    啊世ka阅读 1,672评论 2 7
  • UITableViewCell 父类是UIView UITableView的每一行都是一个UITableViewC...
    翻这个墙阅读 6,836评论 0 1
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,910评论 4 61
  • 国庆期间,我在养一条狗,叫三少。他戏很多,也很精分,但我觉得是狗里最帅的一个,没有之一。 ...
    高衫阅读 487评论 9 9

友情链接更多精彩内容