我想知道实际屏幕上显示UICollectionViewCell
的时间。 cellForRowAtIndexPath
不足,因为此时实际上没有看到细胞。 didEndDisplayingCell
不足,因为从视图中删除单元格时会调用它。
UITableViewDelegate
有一个willDisplayCell
方法,我发现它过去对类似的东西很有用,但它似乎不存在于UICollectionViewDelegate
中。
如何确定细胞何时被带到屏幕上?
答案 0 :(得分:4)
创建UICollectionViewCell
的子类。覆盖其didMoveToWindow
方法:
- (void)didMoveToWindow {
if (self.window != nil) {
// I am now in the window's view hierarchy and thus “on screen”.
}
}
从技术上讲,单元格仍然不可见,因为它位于窗口的可见边界之外,或者因为它被另一个视图覆盖。但通常情况都不是这样。
另请注意,如果重用单元格,则可能无法从视图层次结构中删除并重新添加该单元格。集合视图只能更改单元格的框架。 (我知道UITableView
对iOS 6.0中的表格视图单元格执行此操作。)在这种情况下,当单元格重新用于其他项目时,您将不会收到didMoveToWindow
消息。
如果你解释为什么你想知道什么时候显示一个单元格,我们可能会给你一个更好的答案。
答案 1 :(得分:1)
-[UICollectionView visibleCells]
返回屏幕上可见的所有单元格的数组