我有一个视图控制器,它由两个子UIContainerView
组成,其中一个是固定宽度的,另一个是根据纵向和横向模式动态调整其宽度。两者都包含UITableView
s。
出于某种原因,如果屏幕以纵向方向加载,它会渲染得很好。但是如果它在横向加载,然后旋转到肖像,则第二个(动态)表格会变得一团糟,认为它比它应该更宽,让你水平滚动它应该 正在做。
tableView的单元格正确显示所有大小并坚持这个“太宽”tableView的左侧。但是,如果我将桌面粉红色的背景着色,我可以看到整个东西都延伸到这个太宽的区域。
让我感到困惑的是这里发生了什么。无论视图控制器的加载方向如何,自动布局都不应相同吗?
如果我在viewDidRotate...
处理程序中记录宽度,所有内容似乎都具有正确的宽度,但它仍然以这种奇怪的方式呈现。
是否有可能我只能强制容器视图重新自行解决?
更新:这是tableView的contentSize
搞砸了。记录时所有其他宽度都是正确的,但contentSize.width是关闭的。好消息是我可以手动将它设置回原来的状态,一切都很棒!然而,它没有回答关于为什么它首先发生或者我做错了(如果有的话)的问题。
以下是截图:
答案 0 :(得分:2)
为了强制UITableView
(重新)计算其内容大小,您可以使用layoutIfNeeded
方法。它遍历视图层次结构并立即布置子视图,因此内容大小设置正确。
不是手动设置大小,而是为表视图调用此方法。