我有一个带有2个简单标签的单元,最近6个小时我一直在努力使其正常运行(在此之前已经正常工作,因此决定修改它并丢失了我的工作版本)。我总是收到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:0x7f8fe8737520 V:[UILabel:0x7f8fe873d5a0'Label'(26)]>",
"<NSLayoutConstraint:0x7f8fe8738ea0 UILabel:0x7f8fe873d7a0'Label'.top == UITableViewCellContentView:0x7f8fe873cf00.topMargin>",
"<NSLayoutConstraint:0x7f8fe8739000 UILabel:0x7f8fe873d5a0'Label'.bottom == UITableViewCellContentView:0x7f8fe873cf00.bottomMargin>",
"<NSLayoutConstraint:0x7f8fe8739110 V:[UILabel:0x7f8fe873d7a0'Label']-(NSSpace(8))-[UILabel:0x7f8fe873d5a0'Label']>",
"<NSLayoutConstraint:0x7f8fe8743ac0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7f8fe873cf00(43.6667)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7f8fe8737520 V:[UILabel:0x7f8fe873d5a0'Label'(26)]>
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.
这是我在情节提要中的原型单元(如果您现在还没有弄清楚的话,这是自定义的):
右下角的小标签为“ Sayer”,大标签为“ Body”。
编辑:作为旁注,我不想限制正文的高度,因为它是一个标签,其高度根据其中的文本量而变化。
编辑2:使用@siburb提供的解决方案,警告消失了。但是仍然存在一个新问题,如上面的屏幕显示主体所示,这是一个较大的UILabel,我为其设置了lines
属性等于,0
因为它应该允许标签根据输入的文本量来改变其大小。但是,当我运行该程序时(在下面的屏幕截图中),我只能看到sayer UILabel。主体标签中包含文本(我已经对其进行了测试),所以这不是问题。
在我RecentTableViewController.h
(此表视图的文件)中,我包括了方法:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
本来可以动态调整UILabel的大小,但在此精确的设置中我之前曾使用过它,但我的约束却搞砸了,但它没有用。
编辑3:这是在@siburb响应的“编辑”部分中将建议的编辑添加到我的代码中后的工作版本图片。
您需要降低约束条件之一的“优先级”。
尝试将“主体”的底部约束的优先级降低到900-这将意味着“ sayer”的高度约束不会被破坏。
此外,这可能有助于将“ body” UILabel的“ Vertical Content Hugging Priority”降低为1-这意味着“ body” UILabel不会如此热衷于坚持其“内部内容大小”的高度(标签内容所决定的大小)。
编辑:要解决第二个问题,您可能需要增加“主体” UILabel的“垂直内容压缩抗性优先级”。例如,将其增加到999。
您也不需要此heightForRowAtIndexPath:
方法。只需在您的viewDidLoad:
方法中包含以下内容:
self.tableView.estimatedRowHeight = 100; self.tableView.rowHeight = UITableViewAutomaticDimension;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句