2

我正在尝试制作自定义表格视图。我有一个加载了 UIViews 的 UIScrollView。我想重新创建 tableview 具有的可重用单元格功能。我想知道什么可能是这样做的好方法。

我在想,当 UIViews 滚出屏幕时,我会将它们从 Subview 中删除,当我需要另一个时,我会添加它。但是我不确定哪种方法可能是最好的方法。

我可以检查以查看视图位置,scrollViewDidScroll:但我不确定这是否是一遍又一遍检查的最佳选择。如果有人有任何建议或有用的提示,那将是非常棒的。

谢谢!

4

2 回答 2

2

scrollViewDidScroll 不是理想选择的一个原因是您的滚动视图子类将需要成为它自己的委托。这将拒绝该类的用户成为代表的机会(至少很容易)。

检查这一点的更好的地方是覆盖layoutSubviews。是的,就像 scrollViewDidScroll 一样,它经常被调用!但是,如果您考虑一下,确定是否已滚动任何子视图的唯一方法是检查何时发生任何滚动。

所以关键是尽可能高效地检查。我要尝试的第一件事是快速枚举子视图,询问由 contentOffset 转换的每个帧是否在父视图的范围内(使用CGRectIntersectsRect)。如果没有,请将其添加到您的重用池中并将其从 superview 中删除。

于 2013-08-18T03:54:02.120 回答
1

子类UIScrollView和覆盖setContentOffset。这就是scrollViewDidScroll原始消息的来源UITableView,也就是您可以实现自己的逻辑的地方。

编辑:您可能想研究PSTCollectionView的源代码,它不是 customUITableView而是 custom UICollectionView

于 2013-08-18T10:50:19.350 回答