【发布时间】:2015-10-18 17:56:21
【问题描述】:
然后我穿了这些代码:
- (void)viewWillLayoutSubviews {
for (UIView *aView in [self.view subviews]) {
if ([aView hasAmbiguousLayout]) {
NSLog(@"View Frame %@", NSStringFromCGRect(aView.frame));
NSLog(@"%@", [aView class]);
NSLog(@"%@", [aView constraintsAffectingLayoutForAxis:1]);
NSLog(@"%@", [aView constraintsAffectingLayoutForAxis:0]);
[aView exerciseAmbiguityInLayout];
}
}
}
我以为它不会有任何模棱两可的布局,但是我看到了这些输出。
2015-07-28 17:03:05.087 MyApp[1865:25321] View Frame {{8, 76}, {42, 21}}
2015-07-28 17:03:05.088 MyApp[1865:25321] UILabel
2015-07-28 17:03:05.088 MyApp[1865:25321] (
"<NSLayoutConstraint:0x7b445f20 V:|-(76)-[UILabel:0x7b449c70'Label'] (Names: '|':UIControl:0x7b449b00 )>",
"<NSLayoutConstraint:0x7b449350 V:[UILabel:0x7b449c70'Label'(21)]>"
)
2015-07-28 17:03:05.088 MyApp[1865:25321] (
"<NSLayoutConstraint:0x7b443890 H:|-(8)-[UILabel:0x7b449c70'Label'] (Names: '|':UIControl:0x7b449b00 )>",
"<NSLayoutConstraint:0x7b448de0 H:[UILabel:0x7b449c70'Label'(42)]>"
)
我安装了 iOS7.1 和 8.4 模拟器,但这些输出只出现在 iOS8.4 中。
是我做错了什么还是只是一个错误?
谢谢 :->)
【问题讨论】:
-
如果有不明确的布局,情节提要会告诉你
-
这会导致任何实际问题还是仅显示这些警告?在我正在研究 XCode 6 的项目中,总是有这些模棱两可的布局警告。即使在我一一更正之后,它们仍然会在一段时间后重新出现,但对我的 UI 没有任何影响。如果它们没有引起任何重大问题,我的建议是忽略它们。
-
@Varun Naharia 我使用的是 xib,而不是故事板,并且在我编辑时它没有出现任何警告或错误。
-
@halileohalilei 没有造成布局上的实际问题,但是看到这些信息我还是觉得挺恶心的。
-
@GetToSet 是。但我相信它们是 XCode 的错误。大多数情况下,当我纠正这些警告时,歧义是由 0.5 个左右的错位引起的。真的没什么重要的。
标签: ios iphone xcode uiview ios8