将特定视图旋转到横向时,我会得到此日志:
无法同时满足约束条件。 可能至少以下列表中的一个约束是您不想要的约束。试试这个:(1)看看每个约束,并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它。 (注意:如果您正在查看您不了解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性的文档translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x17009b3f0 V:[UILabel:0x14c51ed20'Welcome to...'(>=54)]>",
"<NSLayoutConstraint:0x17009b580 V:[MyApp.LogoHeaderView:0x14c51f3e0]-(82)-[UILabel:0x14c51ed20'Welcome to...']>",
"<NSLayoutConstraint:0x17009b2b0 V:[UILabel:0x14c51ed20'Welcome to...']-(30)-[UIView:0x14c51e7e0]>",
"<NSLayoutConstraint:0x170280230 V:[MyApp.LogoHeaderView:0x14c51f3e0]-(0)-[UIView:0x14c51e7e0]>"
)
将尝试通过违反约束来恢复
<NSLayoutConstraint:0x17009b3f0 V:[UILabel:0x14c51ed20'Welcome to...'(>=54)]>
在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点,以便在调试器中捕获它。 UIView中列出的UIVonstraintBasedLayoutDebugging类别中的方法也可能有所帮助。
我什么都不懂。我添加了符号UIViewAlertForUnsatisfiableConstraints
断点,但内存地址没有告诉我什么......我怎样才能以更加明智的方式找到这个日志所讨论的约束?
提前致谢
答案 0 :(得分:0)
当你在IB中定义约束时,我认为没有办法获得更多信息。 但是问题是什么?你知道标签和视图。现在,您可以查看此视图的约束。 在更糟糕的情况下,删除所有对象并逐个添加它们,并在每次添加下一个项目时运行应用程序。然后你会发现错误。
答案 1 :(得分:0)
您可以重新排序约束,以便视图以一致的顺序显示。所以,原来:
<NSLayoutConstraint:0x17009b3f0 V:[UILabel:0x14c51ed20'Welcome to...'(>=54)]>
<NSLayoutConstraint:0x17009b580 V:[MyApp.LogoHeaderView:0x14c51f3e0]-(82)-[UILabel:0x14c51ed20'Welcome to...']>
<NSLayoutConstraint:0x17009b2b0 V:[UILabel:0x14c51ed20'Welcome to...']-(30)-[UIView:0x14c51e7e0]>
<NSLayoutConstraint:0x170280230 V:[MyApp.LogoHeaderView:0x14c51f3e0]-(0)-[UIView:0x14c51e7e0]>
变为:
<NSLayoutConstraint:0x17009b580 V:[MyApp.LogoHeaderView:0x14c51f3e0]-(82)-[UILabel:0x14c51ed20'Welcome to...']>
<NSLayoutConstraint:0x17009b3f0 V:[UILabel:0x14c51ed20'Welcome to...'(>=54)]>
<NSLayoutConstraint:0x17009b2b0 V:[UILabel:0x14c51ed20'Welcome to...']-(30)-[UIView:0x14c51e7e0]>
<NSLayoutConstraint:0x170280230 V:[MyApp.LogoHeaderView:0x14c51f3e0]-(0)-[UIView:0x14c51e7e0]>
所以,你在垂直方向上有一个MyApp.LogoHeaderView
的实例,其中有82个点,标签上写着“欢迎来......”。该标签大于或等于54点高。然后它与UIView
之间有30个点。与此同时,您设置了一个约束条件,即UIView
与MyApp.LogoHeaderView
之间应该没有距离。冲突是一些约束要求MyApp.LogoHeaderView
和UIView
之间至少有82 + 54 + 30 == 166点,而另一个约束则表示它们之间有0点。
您的UI中是否有多个地方有MyApp.LogoHeaderView
且标签上写着“欢迎光临......”?