iOS autolayout自适应cell高度时使用estimatedRowHeight的一些问题
2018-03-23 09:43
507 查看
estimatedRowHeight是一个预估高度,再iOS11之前默认是0,也就是默认关闭,在iOS11下,默认44。再iOS11下也可以让estimatedRowHeight=0来关闭预估高度。
我们在使用masonry或者xib生成cell进行自适应高度的时候,会设置一个预估的高度estimatedRowHeight。
如果使用的是自己计算cell高度的话,estimatedRowHeight可以设为0,以避免预估高度的影响。 当各种cell的高度差别较大时可以使用estimatedHeightForRowAtIndexPath方法,给每个cell设置预估高度。参考博客
如果是复杂的cell和界面的话,还是推荐自己计算cell的高度。建议使用SDAutoLayout自动计算高度,地址https://github.com/gsdios/SDAutoLayout
我们在使用masonry或者xib生成cell进行自适应高度的时候,会设置一个预估的高度estimatedRowHeight。
问题描述:
在项目中发现,在iOS11中,当estimatedRowHeight的高度设置小于实际的cell高度时,MJRefresh有时候滚动下拉加载更多会发生tableview的跳动问题,当estimatedRowHeight设置大于或者约等于cell的实际高度时,就不会产生跳动。在iO11之前的版本中不会出现这个问题。问题解决:
查博客发现,在iOS11中,滚动时会动态的根据cell高度估算tableview的contentsize。当你的实际高度大于预估高度的时候,会按照预估高度下的cell的数量来计算contentSize,当实际高度小于预估高度的时候,会按照实际高度下的cell的数量来计算contentSize。参考博客如果我们想避免跳动情况的话,可以设置预估高度大于或等于实际cell的高度,这样就是使用的cell的实际高度来计算contentsize。如果使用的是自己计算cell高度的话,estimatedRowHeight可以设为0,以避免预估高度的影响。 当各种cell的高度差别较大时可以使用estimatedHeightForRowAtIndexPath方法,给每个cell设置预估高度。参考博客
如果是复杂的cell和界面的话,还是推荐自己计算cell的高度。建议使用SDAutoLayout自动计算高度,地址https://github.com/gsdios/SDAutoLayout
相关文章推荐
- IOS研究成果——在autolayout 如何实现 Cell 的高度自适应
- iOS中使用AutoLayout动态调整Cell高度
- 【iOS】Masonry和FDTemplateLayoutCell搭配使用「UITableview自适应内容高度」
- UITableViewCell使用AutoLayout自适应高度
- iOS UI设计: 在Autolayout自适应的情况下tableviewcell高度自适应
- IOS UITableView使用自适应表格单元(estimatedCellHeight)在调用scroll时的bug
- iOS中使用autolayout写轮播图片的问题
- ios 使用autolayout 后button 的frame 无法设置问题!
- IOS UITableView-FDTemplateLayoutCell框架高度返回问题
- UITableView使用autolayout如何自适应高度
- Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局
- IOS tableView cell动态高度 (autoLayout)
- 关于Xib使用AutoLayout动态设置cell高度
- 解决storyboard下使用autolayout自定义Cell时,右侧不对齐的问题
- iOS UITableView+FDTemplateLayoutCell 配合AutoLayout分分钟教你实现动态高度自适应
- 关于ios的autoLayout的一些简单介绍以及使用方法
- IOS 6.0+ Autolayout — UITableViewCell 高度调整
- tableviewcell 中使用autolayout自适应高度
- iOS UITableView-FDTemplateLayoutCell框架 cell重叠 高度返回0.5问题解决
- iOS7上 使用autolayout让Cell自动调整高度