【问题标题】:Making a symbolic Breakpoints / Fixing Auto-layout issue制作符号断点/修复自动布局问题
【发布时间】:2018-02-02 09:56:08
【问题描述】:

我几乎在我的应用程序的每个视图中都使用自动布局。但是偶尔我的调试控制台会显示我们奇怪的警告。尽管有这些错误,我的应用程序似乎工作正常。 以下是这些警告的样子。 第一个例子 第二个例子

创建符号断点似乎有助于找出问题所在。 但是我如何以及在哪里制作它们,一旦我找到它们,我该如何解决这些问题

【问题讨论】:

  • "创建符号断点似乎可以解决这些问题" 他们不会解决任何问题。他们会在调试时“阻止”您的应用程序,让您有时间调试和解决问题。请参阅文档:developer.apple.com/library/content/documentation/…
  • 符号断点是一种调试工具,就像任何其他断点一样。恕我直言,至少同样有用的是学习阅读这种控制台输出。 (1) 它解释了哪个约束被打破 - 示例 #1 是 UIImageView 宽度和 #2 是 UIButton 高度。 (2) 有时下一个问题应该是“布局看起来正确吗?”
  • (3) 有时更容易判断哪个约束是冲突的。在示例 #2 中,我将查看列出的第二个和第三个约束 - 它表明按钮高度距顶部 23 点,距底部 17 点。第四个约束表明 superview 设置为 59 的高度。如果是这样,则意味着按钮为 59-40 或 19 点。所以布局引擎在 19 和 19.5 之间存在冲突,并且没有设置优先级,它决定打破 19.5 的约束。 (是的,示例#1 更难弄清楚 - 使其成为更深入调试的良好候选者。
  • 我让你@dfd 但是如果我的视图中有多个 UIButton 或多个 UIImageView 我如何找到导致问题的特定按钮或图像?

标签: swift xcode autolayout breakpoints


【解决方案1】:

“制作符号断点似乎可以解决这些问题”是不正确的。创建一个符号断点不会神奇地解决问题。当它达到该条件时,或者在这种情况下,当您遇到这些不可满足的约束之一时,它将中断代码执行。

您可以通过选择断点选项卡,然后选择加号菜单并选择符号链接来启用这些

然后加上刚才提到的符号断点

这些错误/警告表明您的视图中有冲突的约束(规则)。自动布局基本上会选择一个并放弃另一个。所以“大部分”时间它不应该引起太多问题。要解决它们,您需要查看哪些规则相互冲突,然后删除一个,使您的视图约束更具体以不引起问题,调整某些约束的优先级。

【讨论】:

  • 更新了答案。您需要提供视图的详细信息、您收到的约束警告以及该视图上所有约束的详细信息,以便我指导您进行特定操作
  • 您需要了解错误信息。存在相互矛盾的约束,操作系统将打破一个以试图解决问题。但没有什么能保证它会破坏正确的。找到导致问题的原因,禁用它,或者根据您的需要进行更改。
【解决方案2】:

在您的第一个示例中,就像调试器所说的那样,您需要处理 UIImageView 的宽度,因为它会导致破坏约束。

在第二个示例中对 UIButton 的高度进行类似处理。 这些是唯一引起问题的因素。

试一试。

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多