iOS 11.0适配:UITableView的contentSize的计算问题

不打扰是莪最后的温柔 提交于 2020-10-24 14:02:25

一  起因

    我在开发中接到一个需求,当UITableView所显示的内容不满一屏时要隐藏上拉控件所显示的“我是有底线的”,我理所当然在封装的UITableView的reloadData调用这么一个方法:

if(self.contentSize.height <= self.frame.size.height){

        self.mj_footer.hidden = YES;

    }else{

        self.mj_footer.hidden = NO;

   }

这对于iOS 11.0以下能解决问题,但iOS 11.0 以上的系统却不起作用

二  原因

经过我用log信息输出发现,在iOS 11.0 以上的系统self.contentSize.height的值总是等于44乘以UITableView的cell的个数得到的,在网上查阅相关资料 发现在iOS11,默认打开了estimatedRowHeight估算高度功能,当tableView创建完成后,contentSize为estimatedRowHeight(默认值为44)*cell的数量,更加详细的请看http://www.cocoachina.com/ios/20171109/21103.html 

三 解决办法

我们可以让estimatedRowHeight=0,关闭这个预估高度的效果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!