【发布时间】:2016-02-26 11:04:36
【问题描述】:
我有一个具有自动行高的UITableView 和一个自定义UITableViewCell。在UITableViewCell 中,我首先添加了一些带有编程自动布局约束的UIButtons。它们按照我的意愿完美定位。然后,在 3 秒后 (NSTimer),我删除所有这些 UIButtons 并重新添加不同数量的它们。 (例如,最初我有 4 个UIButtons,3 秒后,我删除了这 4 个 UIButtons 并添加了 3 个不同的。
最初:
帖子轮换:
为什么会这样?我没有看到任何自动布局警告。此外,在方向改变后,一切都正确定位。是什么需要改变方向?我该如何手动强制执行此操作?(为此重新加载表格视图似乎太多了)
PS:我尝试使用setNeedsUpdateConstraints、layoutIfNeeded、layoutSubviews,但无济于事。
这是UITableViewCell 代码:http://pastebin.com/TcHUXgDU。 (添加了一个 pastebin 以不污染这个空间)但基本上,我的 tableview 子类中有一个 configure: 方法,我在其包含 UITableView 的 cellForRowAtIndexPath 中调用它。此方法添加了这些约束。此外,在计时器触发后,(在另一个函数中)调用相同的代码,只是我添加的项目数与初始项目数不同。
这是我的UITableViewCell 布局:(仅顶部、底部、前导、尾随约束已添加到 UIView“Outerview”)
【问题讨论】:
-
你能发布一些代码吗?并且在方向之前我可以看到单元格的高度是变化的,这使得按钮挤压到填充,而方向的改变通过改变单元格的高度使其可以。
-
我已经发布了一些代码。此外,在定向之前,所有 3 个单元格的单元格高度都是恒定的。 (不像你说的变化)
-
没有回答您的问题,但是如果您使用像 Masonry 这样的库,您将有更好的时间以编程方式实现自动布局
标签: ios objective-c iphone uitableview autolayout