什么是'UIView-Encapsulated-Layout-Width'约束?

Goo*_*rel 48 ios autolayout uicollectionview nslayoutconstraint uicollectionviewlayout

我一直得到'无法同时满足约束'的例外(Xcode 5,iOS 7,设备和模拟器),其中列表中的一个约束是这样的:

"<NSLayoutConstraint:0x165b23d0 'UIView-Encapsulated-Layout-Width'
H:[StoryPlayerCell:0x165affc0(0)]>"
Run Code Online (Sandbox Code Playgroud)

我自己没有设置这个约束.它也不是NSAutoresizingMaskLayoutConstraint.但是它来自哪里?我怎么能摆脱它呢?

我不知道.我'UIView-Encapsulated-Layout-Width'在Apple的文档中找不到任何相关内容.即便是谷歌搜索也没有任何回报.

有什么建议?

PS:我在UICollectionView一个自定义子类中使用这个单元格UICollectionViewFlowLayout.也许这'Encapsulated-Layout'部分与此有关?

DZe*_*Bot 15

一个快速而好的修复方法是将999优先级值分配给具有高优先级的自定义约束.封装和自动生成的约束应该优先于您的约束.

/sf/answers/1805703091/

  • 实际上这只是一个快速但不是很好的修复,因为自动生成的约束要求单元格宽度为0,这不是我想要的. (16认同)

Xu *_*Yin 4

我使用了示例,我认为这些代码导致了自动布局异常。

CGFloat height = MAX(0, -y + maxY);CSStickyHeaderFlowLayout.m 中的第 79 行。

如果你使用像 200 这样的静态高度值,异常就不会再发生。我无法理解 UIView-Encapsulated-Layout 到底是什么,但似乎动态更改 UICollectionViewLayoutAttributes 框架可能会导致该问题。在示例项目中,它是高度,在 PO 的问题中,我猜它是宽度。如果您认为这会有所帮助,也许我可以深入研究一下

  • 这不是问题的答案:-( (9认同)