奇怪的UIContainerView自动布局旋转行为

时间:2013-09-12 01:47:41

标签: objective-c cocoa-touch uitableview autolayout container-view

我有一个视图控制器,它由两个子UIContainerView组成,其中一个是固定宽度的,另一个是根据纵向和横向模式动态调整其宽度。两者都包含UITableView s。

出于某种原因,如果屏幕以纵向方向加载,它会渲染得很好。但是如果它在横向加载,然后旋转到肖像,则第二个(动态)表格会变得一团糟,认为它比它应该更宽,让你水平滚动它应该 正在做。

tableView的单元格正确显示所有大小并坚持这个“太宽”tableView的左侧。但是,如果我将桌面粉红色的背景着色,我可以看到整个东西都延伸到这个太宽的区域。

让我感到困惑的是这里发生了什么。无论视图控制器的加载方向如何,自动布局都不应相同吗?

如果我在viewDidRotate...处理程序中记录宽度,所有内容似乎都具有正确的宽度,但它仍然以这种奇怪的方式呈现。

是否有可能我只能强制容器视图重新自行解决?

更新:这是tableView的contentSize搞砸了。记录时所有其他宽度都是正确的,但contentSize.width是关闭的。好消息是我可以手动将它设置回原来的状态,一切都很棒!然而,它没有回答关于为什么它首先发生或者我做错了(如果有的话)的问题。

以下是截图:

enter image description here

1 个答案:

答案 0 :(得分:2)

为了强制UITableView(重新)计算其内容大小,您可以使用layoutIfNeeded方法。它遍历视图层次结构并立即布置子视图,因此内容大小设置正确。

不是手动设置大小,而是为表视图调用此方法。