一尘不染

UITableView滚动时奇怪的布局行为更改

swift

我有一个具有 自动高度的UITableView自定义UITableViewCell设计

该行为是在my的第一次加载中UIViewController,UITableView显示带有部分文本的标签。然后,当我滚动
到底部然后滚动到顶部时,得到了所需的高度和文本外观。

这是先滚动后再滚动的外观(这是
我的实现的正确外观,但我删除了一些Lorem文本):

编辑1:

Code:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 101 // much heigher than most cells. But no use.

在UI Builder中,UITableViewCell的“行高”设置为“默认”(未选中“自定义” )

在UI Builder中,UITableView的“行高”设置为“ 101”(也尝试将其设置为“ 0”但结果相同。)


阅读 200

收藏
2020-07-07

共1个答案

一尘不染

使自动布局可以在UITableViewCell上工作是为了确保您具有约束所有子视图的约束,也就是说,每个子视图都应具有前导,顶部,尾部和底部约束。

此外,您需要从contentView 的顶部到底部明确的约束线。这可确保自动布局根据其子视图正确确定contentView的高度。

棘手的部分是,如果您缺少某些约束,Interface Builder通常不会警告您。运行项目时,自动布局不会简单地返回正确的高度。例如,它可能会为
单元格高度返回0 ,这表明您的约束需要更多的工作。

如果在处理自己的项目时遇到问题,请尝试调整约束,直到满足上述条件。

检查链接以获取详细信息:http : //www.raywenderlich.com/87975/dynamic-table- view-cell-height-ios-8-swift

2020-07-07