【问题标题】:iOS, Swift: "Unable to simultaneously satisfy constraints" in syslogiOS,Swift:系统日志中的“无法同时满足约束”
【发布时间】:2016-08-08 05:43:47
【问题描述】:

我的第一个 iOS 应用被 App Review 团队拒绝,因为它在启动时崩溃了。我无法重现此崩溃。该应用程序在我的物理 iPad Mini 和所有 Xcode 模拟器上运行良好。此外,相同的构建和存档通过了 TestFlight 内部测试。到目前为止,我有not been able to symbolicate the crash logs 他们发给我。但是,我确实在 syslog 中找到了这个:

Aug  7 17:04:44 Michaels-MacBook-Pro-3 SpringBoard[1333]: Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x7fccfccd0300 UILabel:0x7fccfccc8510' '.leading == SPUISearchTableHeaderView:0x7fccfccc59f0.leadingMargin>",
    "<NSLayoutConstraint:0x7fccfccd0f80 H:[UILabel:0x7fccfccc8510' ']-(NSSpace(8))-[UIButton:0x7fccfcccb710'Show More']>",
    "<NSLayoutConstraint:0x7fccfccd0fd0 SPUISearchTableHeaderView:0x7fccfccc59f0.trailingMargin == UIButton:0x7fccfcccb710'Show More'.trailing>",
    "<NSLayoutConstraint:0x7fccfccc8880 'UIView-Encapsulated-Layout-Width' H:[SPUISearchTableHeaderView:0x7fccfccc59f0(0)]>"
)

看这个,它似乎与一个表格视图、一个标签和一个按钮有关。我的应用程序基于标准的 Master-Detail 项目。所以里面只有一个table view,master,那个view里面只有一个label,就是prototype cell。有一次,我在原型单元格中尝试了一个披露按钮,我怀疑上面倒数第二行的Show More 可能是一个挥之不去的影响。

在 SPUISearchTableHeaderView 上搜索,我在 github 中找到了 this。我注意到它确实增加了一些约束。而这些约束实际上包含文本moreButton。

所以我觉得我可能正在寻找导致崩溃的原因:我认为这是以编程方式添加的一些约束,可能是我对披露按钮的实验遗留下来的。但我完全不确定如何从这里开始。标签上没有明确的限制(见下面的屏幕截图),我认为从来没有。任何帮助将不胜感激!

根据下面 Konstantin 的建议,我尝试为标签添加约束,但唯一可用的是水平和垂直居中。其他为灰色。 (见下面的截图。)当我尝试选择水平居中时,底部的添加约束按钮仍然是灰色的,所以我不能添加它!

【问题讨论】:

  • NSLayoutConstraint:0x7fccfccd0300 UILabel:0x7fccfccc8510' UILabel 约束是什么?
  • 我不确定您是否找对了地方...此警告通常会在 AutoLayout 尝试为您修复布局时显示。关于模棱两可的布局。但该应用程序通常不会崩溃。你有完整的堆栈跟踪吗?

标签: ios swift xcode crash constraints


【解决方案1】:

那是因为你的宽度 = 0。

UIView-Encapsulated-Layout-Width' H:[SPUISearchTableHeaderView:0x7fccfccc59f0(0)]

当你错过了标签的一些约束时,可能会发生这种情况,这是从Show More Button留下的

H:[UILabel:0x7fccfccc8510' ']-(NSSpace(8))-[UIButton:0x7fccfcccb710'Show More']&gt;

验证这些标签是否有前导约束。

【讨论】:

  • 谢谢,但我该怎么做呢?我可以看到的标签没有任何限制。
  • 这是个问题。 View 试图计算它的宽度,这取决于标签和按钮约束,但不能因为你错过了其中之一。只需向该标签添加前导和尾随约束
  • 这似乎很有希望,但是当我尝试时,唯一的对齐可能性是水平和垂直居中。 (将此添加到问题的末尾,并附有屏幕截图。)
  • 我在单元格上看不到 UIButton。位于 UIButton 中的约束问题,标题为“显示更多按钮”和标签(位于左侧)。您可以使用按钮和标签进行屏幕截图吗?
  • 单元格上不再有任何按钮。我尝试在此处放置一个披露按钮,但取消了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
相关资源
最近更新 更多