我遇到一个小问题,我无法找到解决方案。
我试图在第一个单元格在collectionView(collectionView:, cellForItemAtIndexPath indexPath:)
中出列后,使UICollectionViewFlowLayout的布局无效,以便在出现给用户之前使其符合其内容。我需要这样做,因为我需要访问单元格ui元素,这些元素在第一次调用sizeForItemAtIndexPath
时不可用。
在iOS 8中,这样可以正常工作,但在iOS 7 invalidateLayout
中不会立即更新布局,正如Apple文档中所述:
记住调用invalidateLayout方法不会立即开始布局更新过程是很有用的。该方法仅将布局标记为与数据不一致并且需要更新。在下一个视图更新周期中,集合视图会检查其布局是否为脏,如果是,则更新它。实际上,您可以快速连续多次调用invalidateLayout方法,而不会每次都触发立即布局更新。
现在我想知道iOS 7是否有一种解决方法可以立即更新流程布局。
reloadData
不是解决方案,因为在将单元格出列时调用它会使整个集合视图变得混乱。
答案 0 :(得分:1)
我发现invalidateLayout
的解决方案没有立即触发:在加载了collectionview之后调用了viewDidLayoutSubviews
,所以我在这个方法中调用了invalidate方法。它确实有用,这仍然很有趣。