Ios 我可以不理会吗;无法同时满足约束“;?

Ios 我可以不理会吗;无法同时满足约束“;?,ios,iphone,autolayout,Ios,Iphone,Autolayout,我正在将现有应用程序更新为autolayout,以支持更多设备大小。我有一些需要设置动画的对象,我没有使用约束,而是将它们设置为: self.secondCounter.translatesAutoresizingMaskIntoConstraints = YES //example 使用旧的setFrame方法 这似乎可行,但会在第一个动画上引发运行时错误: 无法同时满足约束。可能至少有一个 以下列表中的约束之一是您不想要的约束。尝试 这:(1)查看每个约束,并尝试找出您需要的约束 不要期待

我正在将现有应用程序更新为autolayout,以支持更多设备大小。我有一些需要设置动画的对象,我没有使用约束,而是将它们设置为:

self.secondCounter.translatesAutoresizingMaskIntoConstraints = YES //example
使用旧的setFrame方法

这似乎可行,但会在第一个动画上引发运行时错误:

无法同时满足约束。可能至少有一个 以下列表中的约束之一是您不想要的约束。尝试 这:(1)查看每个约束,并尝试找出您需要的约束 不要期待;(2) 查找添加不需要的约束的代码或 约束并修复它。(注意:如果您看到 NSAutoresizingMaskLayoutConstraints如果您不了解,请参阅 指向UIView属性的文档 翻译自动调整大小(从皮肤到肌肉)( "", "", “”)

将尝试通过打破约束进行恢复

在UIViewAlertForUnsatifiableConstraints处创建符号断点 要在调试器中捕获此信息。研究方法 中列出的UIView上的UIConstraintBasedLayoutDebugging类别 也可能有帮助。2014-10-07 19:41:12.903 AppName[5018:1153922]无法同时满足约束。 可能以下列表中至少有一个约束是 你不会想要的。尝试以下方法:(1)查看每个约束并尝试 找出你不期望的;(2) 查找添加了 一个或多个不需要的约束,然后修复它。(注意:如果您看到 NSAutoresizingMaskLayoutConstraints如果您不了解,请参阅 指向UIView属性的文档 翻译自动调整大小(从皮肤到肌肉)( "", "", “”)

将尝试通过打破约束进行恢复

在UIViewAlertForUnsatifiableConstraints处创建符号断点 要在调试器中捕获此信息。研究方法 中列出的UIView上的UIConstraintBasedLayoutDebugging类别 也可能有帮助

事实上,我没有得到这个消息,因为我没有在这个对象上设置任何约束(我听说Xcode为自动布局xib中的每个视图在构建时为每个默认值设置约束)

但不知何故,一切看起来都很好,似乎都起了作用


我可以忽略此消息吗?还是以后会遇到问题?

您以后肯定会遇到问题,需要解决此问题。如果你没有满足所有的约束条件,运行时修正系统也不能“伪造数字”,那么可能会导致你的应用程序崩溃。你可能会收到这样的令人讨厌的消息:

致命异常:NSInvalidArgumentException。无法在descriptionForLayoutAttribute\u layoutItem\u系数中创建描述。有些东西是零

要解决自动布局问题,请执行以下简单步骤:

  • 找到布局有问题的视图。在右上角的故事板对象左侧列表中,视图控制器的名称旁边会有一个黄色或红色图标:

  • (来源:)

  • 通过更改框架、约束或添加新约束来解决问题。每个问题本身都有一个解释,您可以在这里找到一个优秀的教程:
  • 解决所有问题后,请确保进行测试!在模拟器中的iPhone4、5、6和6 Plus尺寸下测试您的视图,如果合适,使用iPad。另外,请确保在iOS 7和iOS 8下进行测试-某些自动布局约定在iOS 8中可以,但会使iOS 7应用程序崩溃。(经过艰苦的学习…)

  • 就这样!查找、修复、测试:)

    IMHO,这个例外是一个骗局

    这些约束由apple隐式管理。在某些情况下,“那边”的几行代码可能会间接地影响它们,因此,发现代码“那边”引发异常的原因是一件痛苦的事情

    在我的例子中,我发现一个[cell setHidden:YES]继续并用[cell removeFromSuperview]替换了该代码,问题就消失了


    。。。。OO编程的租户之一是使API安全且易于使用。不容易碰伤和混淆。

    谢谢您的澄清。但事实上,我没有给这个观点任何限制。。。如果我这样做,会不会没有错误?尝试添加约束,但事实上消息是sameAh,自动调整大小掩码不需要在运行时转换为约束。尝试使用以下命令禁用它:“[view setTranslatesAutoresizingMaskIntoConstraints:否];”