iOS-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
    iOS-TableView自适应高度

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

    iOS-TableView自适应高度

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

    iOS-TableView自适应高度

    结果:

    iOS-TableView自适应高度

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术狗|博客
原文地址:《iOS-TableView自适应高度》 发布于2019-10-17

分享到:
赞(0)

评论 抢沙发

7 + 4 =


iOS-TableView自适应高度

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录