故事板中的自动布局是全部还是全部?

时间:2013-02-07 01:36:53

标签: autolayout xcode4.6

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

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

1 个答案:

答案 0 :(得分:3)

答案来自Apple开发者论坛中的KMT,在Storyboard级别启用了自动布局。我在某种程度上错过了WWDC视频中的这个关键位。

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