Autolayout抱怨UIImageView的前导/尾随空间

时间:2014-11-29 01:03:24

标签: ios objective-c swift storyboard

我在故事板中有一个UICollectionViewCell,里面有一个UIImageView。

UICollectionViewCell size is width: 189, height: 239。 ImageView具有以下约束:

Trailing Space to cell = 31
Leading Space to cell = 31
Bottom Space to cell =  25
Top Space to cell = 31

运行时收到以下错误:

  

2014-11-28 19:53:33.934 AppName [1585:35698]无法   同时满足约束。可能至少有一个   以下列表中的约束是您不想要的。试试这个:(1)   看看每个约束,并试着找出你不期望的;   (2)找到添加了不需要的约束或约束的代码   并修复它。 (注意:如果您正在看到   您不了解的NSAutoresizingMaskLayoutConstraints,请参阅   到UIView属性的文档   translatesAutoresizingMaskIntoConstraints)(

"<NSLayoutConstraint:0x7fa4a0d75220 H:[UIImageView:0x7fa4a0d743e0]-(31)-|   (Names: '|':UIView:0x7fa4a0d73d40 )>",
"<NSLayoutConstraint:0x7fa4a0d752c0 H:|-(32)-[UIImageView:0x7fa4a0d743e0]   (Names: '|':UIView:0x7fa4a0d73d40 )>",
"<NSAutoresizingMaskLayoutConstraint:0x7fa4a0d567a0 h=--& v=--& H:[UIView:0x7fa4a0d73d40(50)]>" )
  

将尝试通过违反约束来恢复   NSLayoutConstraint:0x7fa4a0d75220   H:[UIImageView的:0x7fa4a0d743e0] - (31) - | (名称:   &#39; |&#39;:UIView:0x7fa4a0d73d40)&gt;

     

在UIViewAlertForUnsatisfiableConstraints处创建一个符号断点   在调试器中捕获它。方法中的   在UIView中列出的UIConstraintBasedLayoutDebugging类别    也可能会有帮助。

我尝试以各种方式更改前导/尾随值(尝试偶数/奇数)但没有成功。造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:6)

这是iOS 8中的已知错误(请参阅此帖子,Autoresizing issue of UICollectionViewCell contentView's frame in Storyboard prototype cell (Xcode 6, iOS 8 SDK) happens when running on iOS 7 only)。单元格是您在故事板中设置的正确大小,但单元格的内容视图大小保持在50x50,这就是您获得约束错误的原因。在cellForItemAtIndexPath:,

中创建单元格后,可以通过添加此行来修复它
cell.contentView.frame = cell.bounds