UICollectionview立即布局更新

时间:2015-02-22 15:27:23

标签: ios swift layout ios7 uicollectionview

我遇到一个小问题,我无法找到解决方案。

我试图在第一个单元格在collectionView(collectionView:, cellForItemAtIndexPath indexPath:)中出列后,使UICollectionViewFlowLayout的布局无效,以便在出现给用户之前使其符合其内容。我需要这样做,因为我需要访问单元格ui元素,这些元素在第一次调用sizeForItemAtIndexPath时不可用。

在iOS 8中,这样可以正常工作,但在iOS 7 invalidateLayout中不会立即更新布局,正如Apple文档中所述:

  

记住调用invalidateLayout方法不会立即开始布局更新过程是很有用的。该方法仅将布局标记为与数据不一致并且需要更新。在下一个视图更新周期中,集合视图会检查其布局是否为脏,如果是,则更新它。实际上,您可以快速连续多次调用invalidateLayout方法,而不会每次都触发立即布局更新。

现在我想知道iOS 7是否有一种解决方法可以立即更新流程布局。

reloadData不是解决方案,因为在将单元格出列时调用它会使整个集合视图变得混乱。

1 个答案:

答案 0 :(得分:1)

我发现invalidateLayout的解决方案没有立即触发:在加载了collectionview之后调用了viewDidLayoutSubviews,所以我在这个方法中调用了invalidate方法。它确实有用,这仍然很有趣。