动态UITableViewCell子视图中的AutoLayout问题

时间:2015-01-18 10:07:03

标签: ios uitableview autolayout nslayoutconstraint

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

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

后台UIImageView有以下4个约束: 0固定为:追踪,底部,顶部和超前视图的前导空间

轮廓图像具有固定的宽度和高度,与领先的超视图具有恒定的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) - |(Names:'|':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 个答案:

答案 0 :(得分:1)

嗯,问题是优先事项。

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

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

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