4

我一直在开发一个企业 iPad 客户端应用程序,它具有相当复杂的包含视图控制器层次结构。我最近不得不在应用程序启动视图(服务器登录视图)中实现重新设计。我决定借此机会使用自动布局实现重新设计,并保持应用程序的其余部分保持不变。在观看了 WWDC 视频并破解代码几天后,我对登录文本字段进行了流畅、动画的重新定位,以进行旋转和键盘显示/隐藏事件。对结果满意,我git合并了重构分支,结果登录后使用应用程序时发现应用程序崩溃,没有调试器提示。我终于发现自动布局以某种方式级联到子容器视图控制器。

在 Main.storyboard 中有一个“主”导航控制器,它有一个 RootViewController 根视图控制器,其视图是子视图控制器视图的容器,从登录视图开始,然后交换到用户最后使用的任何视图控制器。重构后,在 IB 中,服务器登录控制器已选中“使用自动布局”。但是突然之间,一个从未启用过自动布局的子视图控制器也被检查了。当我在该视图控制器上取消选中它时,突然我的服务器登录 vew 控制器自动布局复选框未选中。这是否意味着在故事板中的所有视图控制器上启用/禁用自动布局?如果没有,有人知道发生了什么吗?Xcode 4.6

4

1 回答 1

3

答案来自 Apple 开发者论坛中的 KMT,即在 Storyboard 级别启用了自动布局。我不知何故错过了 WWDC 视频中的这一关键点。

我通过创建一个启用“使用自动布局”的新故事板文件解决了我的特定问题,并将启用自动布局的视图控制器移到其中。不幸的是,在发现在情节提要级别启用了自动布局的过程中,这意味着每当我取消选中 Main.storyboard 中任何对象上的“使用自动布局”复选框时,IB 都会应用最佳猜测约束来替换我拥有的现有弹簧/支柱属性之前设置的。然后当取消选中“使用自动布局”复选框时,它应用最佳猜测弹簧/支柱属性来替换其最佳猜测约束。最终结果是我不得不将弹簧/支柱设置重新应用到情节提要文件中的许多视图。

于 2013-02-07T19:48:21.257 回答