UITableView自动计算cell高度的坑

合理的设计都千篇一律,奇葩的需求各有各的不同。

使用UITableView自动计算cell高度,相对手动计算,无疑方便了太多了。

手动计算高度的麻烦没有了,一行代码解决问题。

self.tableView.estimatedRowHeight = UITableView.automaticDimension

然鹅……就像权利和义务永远对等一样,适配的问题又来了。

按照苹果偏好行业惯例,一般来说,向下适配3个大版本,当前版本为iOS13,则最低适配到iOS10,再往前连模拟器都找不到了。

坑位一

神奇的UITableView.automaticDimension

在iOS10及之前的系统版本,直接使用上述代码,自动计算并不会生效。

而使用UITableViewDelegate方法,则自动计算生效。

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
}

坑位二

UIView-Encapsulated-Layout-Height约束冲突

约束冲突

此时,debugPrint(UITableView.automaticDimension)打印输出为-1。

UITableView.automaticDimension改为固定值,如UIScreen.main.bounds.size.height,冲突消失。

注:并非所有约束冲突都是此问题导致,请仔细检查代码。

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