我正在将现有应用更新为自动布局以支持更多设备尺寸。我有一些需要动画的对象,而不是使用约束我将它们设置为:
self.secondCounter.translatesAutoresizingMaskIntoConstraints = YES //example
使用旧的setFrame方法。
这似乎有效但在第一个动画上抛出了运行时错误:
无法同时满足约束条件。可能至少有一个 以下列表中的约束是您不想要的。尝试 这个:(1)看看每个约束并试着弄清楚你是哪个 不要指望; (2)找到添加了不需要的约束的代码或 约束并修复它。 (注意:如果你看到了 您不理解的NSAutoresizingMaskLayoutConstraints,请参阅 到UIView属性的文档 translatesAutoresizingMaskIntoConstraints)( “” “” “”)
将尝试通过违反约束来恢复
在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点 在调试器中捕获它。方法中的 在UIView中列出的UIConstraintBasedLayoutDebugging类别 也可能有所帮助。 2014-10-07 19:41:12.903 AppName [5018:1153922]无法同时满足约束。 可能至少下列列表中的一个约束是一个 你不想要。试试这个:(1)看看每个约束并尝试 弄清楚你没想到的; (2)找到添加的代码 不需要的约束或约束并修复它。 (注意:如果你看到了 您不理解的NSAutoresizingMaskLayoutConstraints,请参阅 到UIView属性的文档 translatesAutoresizingMaskIntoConstraints)( “” “” “”)
将尝试通过违反约束来恢复
在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点 在调试器中捕获它。方法中的 在UIView中列出的UIConstraintBasedLayoutDebugging类别 也可能会有帮助。
实际上我没有收到此消息,因为我没有对此对象设置任何约束(我听说Xcode在构建时为默认设置为自动布局xib中的每个视图设置它们。)
但不知怎的,一切看起来都不错,似乎也有效。
我可以忽略此消息,还是稍后会遇到问题?
答案 0 :(得分:3)
您将肯定以后遇到问题并需要解决此问题。如果您不满足所有约束条件,并且运行时更正系统无法对数字进行捏造,则可能会导致您的应用崩溃。你可以得到像这样的令人讨厌的消息:
Fatal Exception: NSInvalidArgumentException. Unable to create description in descriptionForLayoutAttribute_layoutItem_coefficient. Something is nil
要解决自动布局问题,请按照以下简单步骤操作:
那就是它!查找,修复,测试:)
答案 1 :(得分:0)
恕我直言,例外是红鲱鱼。
这些限制是由苹果隐含的管理。在某些时候,“那边”的几行代码可以间接地影响它们,因此发现为什么你的代码在这里引发异常是很痛苦的
在我的情况下,我发现[cell setHidden:YES]继续并用[cell removeFromSuperview]替换了该代码,问题就消失了。
.... OO编程的租户之一是使APIS安全且易于使用。不容易受伤和困惑。