我有一个视图控制器,它由两个子UIContainerView组成,一个是固定宽度,另一个是基于纵向和景观模式的动态调整宽度。两者都包含UITableViews。
由于某些原因,如果屏幕加载的纵向方向,它呈现良好。但是,如果它加载在景观中,然后旋转到纵向,则第二个(动态)表会得到所有的旋转,并认为它比实际/应该的更宽,允许您水平滚动它,而它不应该这样做。
tableView的细胞大小都适当,并粘在这个“太宽”的tableView的左边。但是,如果我把桌面视图的背景染成粉红色,我可以看到整个东西都延伸到了这个太宽的区域。
我很困惑这是怎么回事。不管视图控制器是以哪个方向加载的,autolayout不应该是相同的吗?
如果我在viewDidRotate...处理程序中记录宽度,那么所有东西似乎都有正确的宽度,但是它仍然以这种奇怪的方式呈现。
也许我可以强迫容器视图重新放置它自己吗?
更新:是tableView的contentSize被搞砸了。所有其他宽度在日志记录时都是正确的,但是contentSize.width是远远不够的。好消息是,我可以手动将它设置回它应该是什么,一切都很好!然而,它并没有回答为什么会发生这种情况,或者我做错了什么(如果有的话)。
这是一张截图:

发布于 2013-09-17 11:28:13
为了强制UITableView计算其内容大小,可以使用layoutIfNeeded方法。它遍历视图层次结构并立即布局子视图,从而正确设置内容大小。
不要手动设置大小,而是为表视图调用此方法。
https://stackoverflow.com/questions/18754045
复制相似问题