我在控制台中为我的AutoLayout设置遇到了一些冲突错误。
我知道他们的意思。
如何找到错误所指的视图?
我知道我看过一个WWDC视频,其中的人在视图上设置了一些标识符,以便AutoLayout错误更具可读性。
此刻我......
(
"<NSAutoresizingMaskLayoutConstraint:0x20964090 h=--& v=--& H:[UIView:0x1fdddbf0(480)]>",
"<NSLayoutConstraint:0x1fde8000 H:[UIView:0x1fdb35a0(320)]>",
"<NSLayoutConstraint:0x1fdb3dc0 H:|-(0)-[UIView:0x1fdb35a0] (Names: '|':UIView:0x1fdb7040 )>",
"<NSLayoutConstraint:0x1fdb3d80 UIView:0x1fdb35a0.trailing == UIView:0x1fdb7040.trailing>",
"<NSAutoresizingMaskLayoutConstraint:0x1fd66e30 h=-&& v=-&& UIView:0x1fdb7040.width == UIView:0x1fdddbf0.width>"
)
我知道可能是AutoresizingMask导致错误我只是不确定WHICH AutoresizingMask。
答案 0 :(得分:0)
通常我只在代码中添加约束并为其指定名称时才显示标签。如果您通过故事板添加它们,您可以尝试将XCode标识符添加到您的视图中,但是当我遇到该问题时,我通常会添加一些NSLog语句来打印出我感兴趣的视图,例如
NSLog(@"My View: %@", self.myView);
这将显示视图的ID,希望类似
My View: UIView:0x1fdddbf0
在你的情况下。
那就是说,我不确定即使知道这些观点会对你有多大帮助。标准建议是关闭使用autolayout的视图的Autoresizing Mask。我没有太多经验来协调它们,但看起来问题是一个视图被设置为320pt宽并且自动调整掩码添加了约束,将其设置为480pt宽。
答案 1 :(得分:0)
我知道这已经过时了,但对于其他发现此问题的人来说:您可以使用this post中的说明在Interface Builder中执行此操作。基本上你覆盖生成那些&#34; UIView:0xwhatever&#34;的内部方法。带有此代码的子字符串:
@implementation UIView (AutoLayoutDebugging)
- (void)setLayoutDebuggingIdentifier:(NSString *)readableName {
#ifdef DEBUG
objc_setAssociatedObject(self, @"layoutDebuggingIdentifier",
readableName, OBJC_ASSOCIATION_COPY_NONATOMIC);
#endif
}
#ifdef DEBUG
- (NSString *)_layoutDebuggingIdentifier {
return objc_getAssociatedObject(self, @"layoutDebuggingIdentifier");
}
#endif
@end
然后您可以选择IB中的任何视图并设置用户定义的运行时属性&#34; layoutDebuggingIdentifier&#34;到你想在AutoLayout错误中看到的任何字符串。