首页 文章

动态UITableViewCell子视图中的AutoLayout问题

提问于
浏览
1

虽然我似乎已经采取了在故事板的UIViews上设置视图约束的要点,但我似乎无法弄清楚为什么约束不能在动态单元原型ContentView的子视图中正常工作 .

单元格非常简单:UIImageView背景填充整个单元格,在它前面是另一个UIImage和一个标签,如下所示:

背景UIImageView具有以下4个约束:0固定为:trail,bottom,top和superview的前导空间

轮廓图像具有固定的宽度和高度,并且与领先的超视图具有恒定的13pts空间,并且在容器中具有垂直中心

标签有一个8pt的前导空间到配置文件pic和尾随空间到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'Joseph']“,”NSLayoutConstraint:0x7fe5436cb110'UIView-Encapsulated-Layout-Width'H:[UITableViewCellContentView: 0x7fe5434820f0(0)]“)将尝试通过破坏约束来恢复NSLayoutConstraint:0x7fe5434852c0 H:[UIImageView:0x7fe543484450(75)]在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点,以便在调试器中捕获它 . 在UIKit / UIView.h中列出的UIView上的UIConstraintBasedLayoutDebugging类别中的方法也可能有所帮助 .

有什么线索吗?

1 回答

  • 1

    好吧,问题是优先事项 .

    你有背景图像,根据你放入的图像有一些尺寸,而且有一个固定高度和恒定空间13pts顶部和底部的轮廓图 .

    表可能有分隔符,而且正在添加额外的空间 .

    所以建议:较低的例如底部13pts约束从1000到750.这应该删除警告 .

相关问题