Ios 为编程视图层次结构设置自动布局约束?

Ios 为编程视图层次结构设置自动布局约束?,ios,uikit,autolayout,uiview-hierarchy,Ios,Uikit,Autolayout,Uiview Hierarchy,我以编程方式创建视图层次结构,如下所示: UIWindow* window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UIViewController1* viewController1 = [[UIViewController1 alloc] init]; UIViewController2* viewController2 = [[UIViewController2 alloc] init]; U

我以编程方式创建视图层次结构,如下所示:

UIWindow* window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

UIViewController1* viewController1 = [[UIViewController1 alloc] init];
UIViewController2* viewController2 = [[UIViewController2 alloc] init];

UINavigationController* navigationController = [[UINavigationController alloc] init];
[navigationController setViewControllers:@[viewController1, viewController2] animated:NO];

[window setRootViewController:navigationController];
[window makeKeyAndVisible];
这两个VC是从XIB加载的,在这两种情况下都使用autolayout。一切看起来都很好,但当我实际执行
po[[UIWindow keyWindow]\u autolayoutTrace]
时,控制台中出现了一些令人担忧的
模糊布局
警告:

*<UIWindow:0xc63bec0>
|   *<UILayoutContainerView:0xd3d79b0> - AMBIGUOUS LAYOUT
|   |   *<UINavigationTransitionView:0xd3d8b60> - AMBIGUOUS LAYOUT
|   |   |   *<UIViewControllerWrapperView:0xd566c00> - AMBIGUOUS LAYOUT
|   |   |   |   *<UIView:0xc66b290> - AMBIGUOUS LAYOUT
|   |   |   |   |   *<UIView:0xc66b0e0> - AMBIGUOUS LAYOUT
|   |   |   |   |   |   *<MKMapView:0xd504800> - AMBIGUOUS LAYOUT
*
|*-不明确的布局
||*-不明确的布局
|| |*-不明确的布局
|| | |*-布局不明确
|| | | |*-布局不明确
|| | | | |*-不明确的布局
所以我的问题是,我如何摆脱它们? 或者更一般地说,如何使用自动布局以编程方式设置窗口和视图层次结构

我发现文档中关于以编程方式设置窗口的内容非常模糊。尽管我看了WWDC关于此事的所有三个视频,但我还是无法掌握如何做到这一点


编辑:我遇到的问题似乎只与新的iOS 7有关。由于这是保密协议,我将把这个讨论转移到指定的苹果开发者论坛

模棱两可的布局
意味着您没有为“自动布局”指定足够的内容,以了解如何布局视图。换句话说,您指定的内容有点模糊

这与断开的约束完全不同,在断开的约束中,有两个或多个约束告诉自动布局执行不同的操作

对于模棱两可的布局,“自动布局”将尝试找出您想要做的事情。希望这就是你想要的,但这不是保证。因此发出警告

这个答案并不是告诉你如何开始的地方。但谢天谢地,现在出现了更多的自动布局资源

有一本书。虽然我买了它,但我还没有机会读它。不过看起来确实不错

另外,请阅读奥勒·贝格曼的优秀文章

对于入门教程,请看一下Ray wenderlich的


最后,如果我可以说每次都有一件自动布局的事情让我着迷的话,那就是忘记将
settranslatesAutoResizezingMaskintoConstraints
标志设置为
NO
,用于我以编程方式创建的要使用自动布局的视图。当您在控制台上看到任何看起来古怪的约束异常时,请记住这一点。

我理解调试的一般原理和方法,但我的问题涉及如何在代码中从头开始构建视图层次结构。我无法将我的UIWindow连接到它的超级视图,因为它没有。