【发布时间】:2015-03-16 12:16:16
【问题描述】:
虽然我似乎已经掌握了在情节提要的 UIView 上设置视图约束的要点,但我似乎无法弄清楚为什么约束在动态单元原型 ContentView 的子视图中无法正常工作。
单元格非常简单:一个 UIImageView 背景填充整个单元格,在它前面是另一个 UIImage 和一个标签,如下所示:
后台 UIImageView 有以下 4 个约束: 0 固定到:trail、bottom、top 和到 superview 的前导空间
个人资料图片图像具有固定的宽度和高度以及到前导超级视图的恒定 13pts 空间,并且在容器中具有垂直中心
标签有一个 8pt 的前导空间到配置文件图片和尾随空间到 superview,并且在容器中有一个垂直中心。
这就是我得到的:
我错过了什么吗?我研究了这个问题,但没有答案解决了这个问题。但是,我尝试在加载单元格后在 cellForRowAtIndexPath 中添加以下行:
cell.setNeedsUpdateConstraints()
cell.updateConstraintsIfNeeded()
在运行时出现以下错误:
无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档)
(
"NSLayoutConstraint:0x7fe5434852c0 H:[UIImageView:0x7fe543484450(75)]", "NSLayoutConstraint:0x7fe5436c5cd0 H:|-(12)-[UIImageView:0x7fe543484450] (名称: '|':UITableViewCellContentView:0x7fe5434820f0)", “NSLayoutConstraint:0x7fe5436c34e0 H:[UILabel:0x7fe543487430'Joseph']-(8)-|(名称:'|':UITableViewCellContentView:0x7fe5434820f0)”, "NSLayoutConstraint:0x7fe5436bcca0 H:[UIImageView:0x7fe543484450]-(8)-[UILabel:0x7fe543487430'约瑟夫']", “NSLayoutConstraint:0x7fe5436cb110 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x7fe5434820f0(0)]” )将尝试通过打破约束来恢复 NSLayoutConstraint:0x7fe5434852c0 H:[UIImageView:0x7fe543484450(75)]
在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点,以便在调试器中捕获它。 UIKit/UIView.h 中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。
有什么线索吗?
【问题讨论】:
标签: ios uitableview autolayout nslayoutconstraint