2

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

出于某种原因,如果屏幕以纵向加载,它会呈现良好。但是,如果它以横向加载然后旋转到纵向,则第二个(动态)表会变得很乱,并认为它比它应该/应该更宽,让您水平滚动它应该这样做。

tableView 的所有单元格大小都正确,并粘在这个“太宽”的 tableView 的左侧。但是,如果我将 tableview 的背景涂成粉红色,我可以看到整个东西正在延伸到这个太宽的区域。

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

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

有没有我可以强制容器视图自行重新布局的方法?

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

这是一个屏幕截图:

在此处输入图像描述

4

1 回答 1

2

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

无需手动设置大小,而是为您的表格视图调用此方法。

于 2013-09-17T11:28:13.557 回答