1

在 xcode 4.2 中,如果您为 iPhone 和 iPad 都设置了一个新项目并选择创建一个新的 iOS“主从应用程序”,Xcode 将为您设置很多模板代码。应用程序的 iOS“版本”有一个不同的更简单的故事板。我希望我的应用程序的详细视图也是由表控制器控制的表视图,并且我希望此表视图的单元格随着方向的变化自动调整大小。问题是,虽然这适用于 iPhone 版本的应用程序,但它不适用于 iPad 版本。

前置条件:

如果您在 iPhone 故事板上编辑详细视图,使其包含一个表格视图控制器并定义表格视图以包含单个原型单元格 - 将原型单元格设置为自定义类型并向其添加一些子视图,然后定义这些子视图具有自动调整大小属性(例如两个按钮 - 一个固定在视图的左侧,另一个固定在视图的右边距)。对 iPad 故事板的详细视图执行相同操作(当然,它包含在更复杂的拆分视图控制器排列中)。

仔细检查所有视图控制器都选择了从 NIB 调整视图大小(默认情况下),并且所有视图都选择了 Autoresize Subviews。

预期的:

当为 iPhone 或 iPad 编译应用程序时,在这两种情况下,表格单元格及其子视图都应根据方向更改调整大小。

实际结果:

在 iPad 版本的应用程序中,表格单元格不会重新布局以匹配 UITable 视图的更改大小。iPhone 版应用程序上的表格单元格按预期运行。

很明显,嵌套视图的子视图布局链被破坏,使得重新布局子视图不会发生或在发生方向更改时一直调用到表格视图单元格。任何人都知道这是否可以在 Interface Builder 中修复,或者如果不能重新建立链需要什么代码?我知道如何在我自己的 UITableViewController 自定义子类中使用 willRotateToInterfaceOrientation:duration: 来解决这个问题,但我不确定这样做是否干净,我不希望通过提供解决方法的代码片段来部分自动化方向更改对于我认为应该可以自动化的东西。

4

0 回答 0