UICollectionViewController的预缓存视图

时间:2016-10-31 09:30:13

标签: ios swift uicollectionview tvos nscache

我试图通过在NSCache中预先缓存单元格contentView的子视图来避免在UICollectionViewController中渲染延迟,但似乎我错过了正确激活它们,因为当用户滚动到它时渲染单元格有延迟(滚动冻结,但首先只是时间!)。当用户返回时,相同的视图可以平滑地呈现。所以似乎预先缓存一个简单的初始化视图是不够的,我需要对视图做更多的事情,以便更快地渲染它。我该怎么做?

目前的流程如下:

  1. 使用10个单元格渲染集合视图并预缓存所有10个单元格视图(即 cachedView - > contentView - > cellView)
  2. 向前滚动查看渲染/滚动延迟的前5个单元格
  3. 顺利向后滚动到第一个单元格,没有延迟
  4. 顺利向前滚动前5个单元格,没有延迟
  5. 向前滚动查看渲染延迟的剩余单元格
  6. 此时所有单元格视图都被激活(?),因此前后滚动是顺畅的。
  7. 一些细节:

    • 一个单元格占据整个屏幕。
    • cellForItemAtIndexPath替换缓存视图(删除cell.contentView.subviews.first并从缓存中添加另一个视图)
    • 缓存视图包含图片。
    • 在滚动之前将缓存的视图渲染到图像不会加速渲染单元格。
    • 不使用缓存视图会导致渲染/滚动延迟

0 个答案:

没有答案