4

当我在调试器中暂停我的应用程序并

po [[[[UIApplication sharedApplication] delegate] window] _autolayoutTrace]

从另一端出来的递归描述如下:

*<UIWindow:0xc03d900> - AMBIGUOUS LAYOUT
|   *<UILayoutContainerView:0xc070ac0>
<<SNIP>>
|   |   |   |   |   |   |   |   *<_UILayoutGuide:0x134b6240> - AMBIGUOUS LAYOUT
|   |   |   |   |   |   |   |   *<_UILayoutGuide:0x1348a2f0> - AMBIGUOUS LAYOUT

好的,我的猜测是那些是 UIViewControllertopLayoutGuidebottomLayoutGuide属性,但是它们是如何以及为什么模棱两可的?

无论我的哪个视图控制器子类最前面,这些打印都是模棱两可的。我的内容视图控制器嵌套在UINavigationController安装在UITabBarController. 设置没有什么令人惊讶或不寻常的。UIViewController子类,UITableViewController子类-没关系,指南仍然模棱两可。

4

3 回答 3

4

一个月前我提交了一个关于这个的错误报告(rdar://15402294)http://openradar.appspot.com/radar?id=5327306709008384

苹果后来只要求提供一个示例项目,问题仍然存在。您可以提交重复的错误报告。他们拥有的错误报告越多,他们解决问题的速度就越快。

更新:我的错误报告已作为 10535951(打开)的副本关闭,因此这可能是一个已知问题。

于 2013-12-06T10:57:08.410 回答
1

苹果以外的人可能不知道这个问题的答案。iOS 系统设置视图控制器的顶部和底部布局指南,_UILayoutGuide 是私有 API。所以我们只剩下猜测了。

从某种意义上说,我认为模棱两可一词甚至可以应用于布局指南。布局指南仅用作根视图镶边的一种代理——顶部的状态和导航栏,或底部的工具栏。它们的唯一目的是帮助视图沿垂直轴定位自己。因此,我看不出为什么布局指南甚至需要任何形式的水平对齐。如果没有水平对齐,布局指南将永远模棱两可。

事实上,如果你记录一个顶部布局指南对象,你会得到一个原点为 (0,0) 且宽度为 0 的矩形: <_UILayoutGuide: 0x89c7f60; 帧 = (0 0; 0 20);

自动布局系统对这些隐藏的布局指南进行如此严厉的评判,这似乎是不公平的。它们的模棱两可的状态是原本漂亮的 _autolayoutTrace 日志的一个难看的瑕疵。

于 2013-12-13T10:17:59.287 回答
0

不明确的布局通常意味着您没有足够的约束来完全定义布局。我没有看到故事板或 nib 约束的猜测是,您需要为当前视图或约束附加到的包含视图设置一些定义约束。

您可以发布该视图和包含视图的所有约束的屏幕截图吗?

于 2013-12-12T19:18:37.443 回答