我已经为 UITableView 单元格创建了自定义 View 。当应用程序运行并且 UITableView 被填充时,我收到太多与设计相关的警告。让我快速分享我正在获得的设计日志
[LayoutConstraints] 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:0x600000a8c530 H:[UIView:0x7fcc025a6390]-(1)-| (active, names: '|':UIView:0x7fcc025a5dc0 )>",
"<NSLayoutConstraint:0x600000a8c620 H:|-(1)-[UIView:0x7fcc025a6390] (active, names: '|':UIView:0x7fcc025a5dc0 )>",
"<NSLayoutConstraint:0x600000a8cb20 H:|-(0)-[UIView:0x7fcc025a5dc0] (active, names: '|':UITableViewCellContentView:0x7fcc025a58a0 )>",
"<NSLayoutConstraint:0x600000a8cbc0 H:[UIView:0x7fcc025a5dc0]-(0)-| (active, names: '|':UITableViewCellContentView:0x7fcc025a58a0 )>",
"<NSLayoutConstraint:0x600000a8d5c0 'UIView-Encapsulated-Layout-Width' UITableViewCellContentView:0x7fcc025a58a0.width == 0 (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x600000a8c530 H:[UIView:0x7fcc025a6390]-(1)-| (active, names: '|':UIView:0x7fcc025a5dc0 )>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2020-07-16 12:52:06.760595+0500 NeverEndingApp[4395:106090] [LayoutConstraints] 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:0x600000a8c1c0 V:[UIView:0x7fcc025a6ad0]-(0)-| (active, names: '|':UIView:0x7fcc025a6390 )>",
"<NSLayoutConstraint:0x600000a8c260 V:|-(0)-[UIView:0x7fcc025a6ad0] (active, names: '|':UIView:0x7fcc025a6390 )>",
"<NSLayoutConstraint:0x600000a8c580 V:|-(1)-[UIView:0x7fcc025a6390] (active, names: '|':UIView:0x7fcc025a5dc0 )>",
"<NSLayoutConstraint:0x600000a8c5d0 V:[UIView:0x7fcc025a6390]-(1)-| (active, names: '|':UIView:0x7fcc025a5dc0 )>",
"<NSLayoutConstraint:0x600000a8cad0 V:|-(0)-[UIView:0x7fcc025a5dc0] (active, names: '|':UITableViewCellContentView:0x7fcc025a58a0 )>",
"<NSLayoutConstraint:0x600000a8cb70 V:[UIView:0x7fcc025a5dc0]-(0)-| (active, names: '|':UITableViewCellContentView:0x7fcc025a58a0 )>",
"<NSLayoutConstraint:0x600000a8d610 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7fcc025a58a0.height == 0 (active)>"
)
Following is the view design
现在我不知道造成该问题的原因是什么。因为最终的结果是令人满意的并且符合预期。
So following I wanted to know:
- 如何找出设计中的确切问题
- 如何找出哪个 View 以及该 View 的哪个约束产生了问题
- 删除这些警告真的很重要吗,因为我正在按预期进行设计
注意:我知道这里有数百万个线程来解决类似的问题,但其中大多数都是过时的和旧的。我也问它只是为了知道避免这些问题的完美方法以及跟踪问题的简单且最佳的方法。
最佳答案
错误消息显示存在冲突的约束。并非所有这些约束都能同时成立。您需要删除一个或进行编辑。
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x600000a8c530 H:[UIView:0x7fcc025a6390]-(1)-| (active, names: '|':UIView:0x7fcc025a5dc0 )>
您可以采取一些步骤来识别问题:
- 显示调试 View 层次结构
- 搜索并查找导致问题的约束和 View (
0x600000a8c530
、0x7fcc025a6390
),如 this 中所述回答。
- 然后尝试调查冲突。
您还可以查看这些文档以获取更多信息。
关于ios - 如何找出哪个约束不起作用或产生问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62932505/