奇怪的 UIContainerView 自动布局旋转行为
Posted
技术标签:
【中文标题】奇怪的 UIContainerView 自动布局旋转行为【英文标题】:Strange UIContainerView autolayout rotation behavior 【发布时间】:2013-09-12 01:47:40 【问题描述】:我有一个视图控制器,它由两个子 UIContainerView
s 组成,其中一个是固定宽度,另一个根据纵向和横向模式动态调整其宽度。两者都包含UITableView
s。
由于某种原因,如果屏幕以纵向加载,它会很好地呈现。但是,如果它以横向加载,然后 旋转 到纵向,则第二个(动态)表会变得很糟糕,并认为它比它应该/应该更宽,让你水平滚动它应该 没有在做。
tableView 的所有单元格大小都合适,并粘在这个“太宽”的 tableView 的左侧。但是,如果我将 tableview 的背景涂成粉红色,我可以看到整个东西都延伸到了这个太宽的区域。
这让我很困惑。无论视图控制器加载为哪个方向,自动布局不应该相同吗?
如果我在 viewDidRotate...
处理程序中记录宽度,一切似乎都具有正确的宽度,但它仍然以这种奇怪的方式呈现。
我是否可以强制容器视图自行重新布局?
更新: 是 tableView 的 contentSize
搞砸了。记录时所有其他宽度都是正确的,但 contentSize.width 是错误的。好消息是我可以手动将其设置回应有的状态,并且一切正常!然而,它并没有回答为什么它首先发生或我做错了什么(如果有的话)的问题。
截图如下:
【问题讨论】:
【参考方案1】:为了强制UITableView
(重新)计算其内容大小,您可以使用layoutIfNeeded
方法。它遍历视图层次结构并立即布置子视图,因此内容大小设置正确。
不要手动设置大小,而是为您的表格视图调用此方法。
【讨论】:
以上是关于奇怪的 UIContainerView 自动布局旋转行为的主要内容,如果未能解决你的问题,请参考以下文章
iOS 8 中的嵌套 CollectionView、自动布局和旋转