在约束更改后让集合视图单元格更新

时间:2017-05-16 20:10:14

标签: ios uicollectionview autolayout constraints

我在iOS 9的集合视图单元格中遇到自动布局问题。

在集合视图中:cellForItemAtIndexPath:我更改了约束:

[[self rootStack] setDistribution:UIStackViewDistributionFillEqually];

[[self rootStack] setDistribution:UIStackViewDistributionFillProportionally];

在单元格的preferredLayoutAttributesFittingAttributes中:我尝试强制进行额外的布局:

- (UICollectionViewLayoutAttributes*) preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
{
    [self setNeedsLayout];
    [self layoutIfNeeded];

    return layoutAttributes;
}

但是,当显示单元格时,一些显示约束更改的效果,而另一些则不显示。如果我滚动一个不在屏幕外显示更改的单元格然后向后滚动到它,则会显示更改。将约束更改移动到单元格的updateConstraints导致没有任何单元格在第一次显示时显示更改。

我可以在集合视图控制器的viewWillAppear:中通过在集合视图上调用reloadData来显示第一个单元格。但是一旦我开始滚动,一些进入视图的单元格格式不正确(除非我滚过它们然后滚动回它们)。

有没有办法可以确保所有单元格在第一次显示时格式正确?

0 个答案:

没有答案