下面是我在调试区域收到的错误消息。它运行良好,除了我收到此错误之外没有任何问题。这会阻止苹果接受该应用程序吗?我该如何解决?
(
"<NSLayoutConstraint:0x7f9bdaf58890 UIView:0x7f9bdaf484e0.leading == UIView:0x7f9bdaf56e30.leadingMargin + 34>",
"<NSLayoutConstraint:0x7f9bdaf58930 UIView:0x7f9bdaf56e30.trailingMargin == UIView:0x7f9bdaf484e0.trailing + 34>",
"<NSLayoutConstraint:0x7f9bdaf58980 H:[UIView:0x7f9bdaf484e0(300)]>",
"<NSLayoutConstraint:0x7f9bdaf5bfc0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7f9bdaf56e30(375)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7f9bdaf58980 H:[UIView:0x7f9bdaf484e0(300)]>
我想这发生在iPhone 6上的UITableView
中。
由于单元格从 tableView 的左边缘延伸到右边缘,因此单元格的宽度需要为 375 磅。UITableView 添加了UIView-Encapsulated-Layout-Width
约束来实现此目的。
您自己添加的约束|-34-[centerView(=300)]-34-|
将创建 368 磅的像元宽度。
由于 368 != 375,这不起作用。
您有几个选择。
- 将约束转换为相等约束,即使中心视图的宽度"大于或等于"。在如下所示的代码中:
|-34-[centerView(>=300)]-34-|
- 使用"容器中的水平中心"约束来约束中心视图,保留宽度约束并摆脱边距约束。
- 完全摆脱宽度约束。宽度将根据单元格宽度而变化。例如
|-34-[centerView]-34-|
,这将导致iPhone 6上的307 pt宽视图,iPhone 6s上的宽视图为346磅,iPhone 5上的宽为252点。
正如您所说,如果系统违反 width=300 约束,该应用程序将正常工作,因此您可以自己删除该约束。如果它没有这种约束,那么拥有它就没有意义。
同时具有两个边距离约束和宽度约束是没有意义的,并且违背了自动布局的目的。