ABe*_*its 9 uikit ios autolayout uiview-hierarchy
我正在以编程方式创建我的视图层次结构,如下所示:
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];
Run Code Online (Sandbox Code Playgroud)
两个VC都是从XIB加载的,在这两种情况下都使用autolayout.一切看起来都不错但是当我真的做了po [[UIWindow keyWindow] _autolayoutTrace]一件事时,我AMBIGUOUS LAYOUT在控制台中收到了一些令人担忧的警告:
*<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
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何摆脱它们?或者更一般地说,如何使用自动布局以编程方式设置窗口和查看层次结构?
我发现文档在以编程方式设置窗口时非常模糊.即使我在这个问题上观看了所有三个WWDC视频,我也无法控制如何做到这一点.
编辑:它似乎是我刚刚与新的iOS 7有关的问题.由于它是在NDA下我将把这个讨论转移到指定的Apple Developer Forums.
AMBIGUOUS LAYOUT意味着您没有为自动布局指定足够的信息来了解如何布局您的视图。换句话说,你所指定的内容有点模糊。
这与破坏的约束有很大不同,在破坏的约束中,您有两个或多个约束来告诉自动布局执行不同的操作。
对于不明确的布局,自动布局将尝试找出您的意图。希望这就是您想要的,但不能保证。因此发出警告。
这个答案并不是真正告诉您如何开始的地方。但值得庆幸的是,现在出现了更多自动布局资源。
有本书《iOS Auto Layout Demystified》。虽然我已经买了,但还没有机会读。不过看起来确实不错。
另外,请查看 Ole Begemann 的优秀文章《关于 Cocoa Autolayout 您需要了解的 10 件事》。
有关入门教程,请查看 Ray wenderlich 的Beginning Auto Layout in iOS 6: Part 1/2。
最后,如果我可以说,有一个自动布局每次都让我着迷,那就是忘记为我以编程方式创建的视图设置标志setTranslatesAutoresizingMaskIntoConstraints,NO表明我想使用自动布局。当您在控制台上看到任何看起来怪异的约束异常时,请记住这一点。
| 归档时间: |
|
| 查看次数: |
2236 次 |
| 最近记录: |