如何使用子视图的延迟/动态加载实现自定义 UIView,类似于 UITableView
Posted
技术标签:
【中文标题】如何使用子视图的延迟/动态加载实现自定义 UIView,类似于 UITableView【英文标题】:How to implement custom UIView with lazy/dynamic loading of subviews, similar to UITableView 【发布时间】:2011-12-16 18:39:49 【问题描述】:所以,我目前有一个 GridView 类,这基本上就是它听起来的样子。它是 UIView 的一个子类,它有一个暂存区域,其中有一堆子视图以类似网格的方式放置。目前我将 GridView 放入笔尖中的 UIScrollView 中。当 GridView 加载时,它必须一次加载所有的子视图,即使是那些不可见的。
例如,如果我有一个 5 列和 500 行的网格,它将一次加载所有 2500 个视图,正如您可以想象的那样,这需要很长时间。我想实现它,以便它只加载可见的视图,并在用户滚动时加载新视图。这类似于 UITableView 加载其单元格的方式。
我认为它会遵循与 UITableView 相同的模式,但我不太确定如何开始。任何人有任何指针/提示?
提前致谢
【问题讨论】:
【参考方案1】:您知道每个网格单元的大小。我假设您正在实现 UIScrollViewDelegate
方法,因此您可以在滚动时收到一条消息。因此,一旦您收到-(void)scrollViewDidScroll:(UIScrollView *)
消息,计算可见单元格,并加载进入视图的单元格的视图。
更好的是,就像在UITableView
中一样,回收您的单元格视图。当单元格离开视野(顶部或底部)时,将视野外的单元格用于进入视野的新单元格。
查看 UITableView
类的 ivars 和方法,并考虑模仿该行为和实现。
【讨论】:
以上是关于如何使用子视图的延迟/动态加载实现自定义 UIView,类似于 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
在 UIViewController 的主视图中加载自定义 UIView
如何实现在动态布局中添加更多视图在android中实现滚动视图
实现 UITableView (Slave) 的动态高度,它作为子视图添加到另一个具有动态高度的 UITableView (Master) 的自定义单元格中
来自 XIB 的自定义 UIView 加载具有巨大规模的子视图