强制更新离屏 UICollectionView

Posted

技术标签:

【中文标题】强制更新离屏 UICollectionView【英文标题】:force update offscreen UICollectionView 【发布时间】:2013-12-13 11:01:13 【问题描述】:

我有两个视图控制器 A 和 B。ViewControllerA 上有一个 UICollectionView。

如果我将 ViewControllerB 推送到 ViewControllerA 上,那么在后台 ViewControllerA 的 UICollectionView 更新中,我想强制集合视图重绘并将其单元格出列,以便当我从 ViewControllerB 返回时,ViewControllerA 的数据是最新且正确的。调用 reloadData 不会使集合视图在后台重绘它自己,它会等到 viewWillAppear 之后触发 [UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes],这是调用数据源以使新单元格出列的方法。

在调用 viewWillAppear 之前强制或欺骗 collectionview 以便它在新单元格上调用 [UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes]

我正在尝试让自定义视图控制器转换工作,如果在查看 ViewControllerB 时 ViewControllerA 中的数据发生了变化,这看起来很奇怪。我想强制 collectionView 更新,所以当我调用 CollectionView.visibileIndexPaths 时,会返回正确的项目,并且我的动画看起来会正确。

【问题讨论】:

您可以使用委托来更新另一个控制器的视图。试试看。 【参考方案1】:

在对 ViewControllerA 的视图进行动画处理之前调用 layoutIfNeeded 会强制 collectionView 在 ViewControllerA 返回屏幕之前更新。

【讨论】:

以上是关于强制更新离屏 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

QGLWidget 和快速的离屏渲染

如何高性能的给 UIImageView 加个圆角?

离屏渲染,OpenGL的三种渲染方式

离屏渲染

离屏 Canvas 原理与 SpriteBuffer

iOS切圆角方法解决离屏渲染问题