仅在可见时向 UIScrollView 添加视图

Posted

技术标签:

【中文标题】仅在可见时向 UIScrollView 添加视图【英文标题】:Add views to UIScrollView only when will be visible 【发布时间】:2015-01-06 11:07:27 【问题描述】:

我在运行时使用大量数据创建视图,并将这些视图添加到 UIScrollView。

这里的问题是,创建屏幕需要很多时间,这不是很好的用户体验。 我只想为可见的屏幕部分创建初始视图,并在滚动 UIScrollView 时添加/创建其他视图。

关于最佳方法的任何提示?

提前致谢

【问题讨论】:

你可以把整个东西放在一个带有不同高度的单元格的 uitableview 中,而不是滚动视图。这样更容易跟踪可见单元格。 我不能,因为视图可以有复杂的布局,我不能重复使用单元格。我的第一种方法是创建一个集合视图,但是对于复杂的布局,每次重复使用单元格时都会遇到问题 您不必强制重复使用单元格,只有在使用 dequeueReusableCellWithIdentifier: 方法时才会发生这种情况。如果您只是按需实例化新单元格并将它们保存在单独的列表(或缓存)中,那么您可以在用户向后滚动时从该缓存中获取单元格,从而避免重用问题。 我可以为 collectionView 做同样的事情吗? 【参考方案1】:

您可以使用UITableView,将单元格分隔符设置为无,并使用可变高度的行单元格。像往常一样处理UITableViewCell,即使用标识符的deque cell。

这是处理内存问题和处理大量数据的最佳方法。

您也可以对UICollectionViewCell 执行相同操作。

【讨论】:

感谢您的回复,但我无法实施您的解决方案。我已经实现了一个collectionView,但是由于我有大量可能的单元格类型(30),所以当collectionView 重新加载每个单元格(视图具有复杂的布局)时,我面临着“性能”问题。

以上是关于仅在可见时向 UIScrollView 添加视图的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用类别和运行时向 UIScrollView 添加 BOOL 类型属性“isScrolling”吗?

如何同步无限的 UIScrollView?

Swift 向 UIScrollView 子视图添加约束

如何在 ios 中使用自定义形状创建 uiscrollview?

获取 UIScrollView 中可见视图之外的 UIButtons 的框架/原点

UIScrollview 仅在拖动 uiviews 时滚动