Dav*_*d U 5 constraints ios autolayout uicollectionview
我在 iOS 9 中的集合视图单元格中遇到自动布局问题。
在集合视图的 :cellForItemAtIndexPath: 期间,我更改了约束:
[[self rootStack] setDistribution:UIStackViewDistributionFillEqually];
或者
[[self rootStack] setDistribution:UIStackViewDistributionFillProportionally];
在单元格的 PreferredLayoutAttributesFittingAttributes: 期间,我尝试强制进行另一轮布局:
- (UICollectionViewLayoutAttributes*) preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
{
[self setNeedsLayout];
[self layoutIfNeeded];
return layoutAttributes;
}
Run Code Online (Sandbox Code Playgroud)
尽管如此,当显示单元格时,有些单元格会显示约束更改的效果,有些则不会。如果我将不显示更改的单元格滚动到屏幕外,然后滚动回该单元格,它就会显示更改。将约束更改移动到单元格的 updateConstraints 会导致没有任何单元格在首次显示时显示更改。
我可以通过在集合视图控制器的 viewWillAppear: 期间调用集合视图上的 reloadData 来修复显示的第一个单元格的问题。但是,一旦我开始滚动,进入视图的一些单元格的格式不正确(除非我滚动经过它们,然后滚动回它们)。
有没有办法确保所有单元格在第一次显示时格式正确?