使用子视图优化 UIScrollView

Posted

技术标签:

【中文标题】使用子视图优化 UIScrollView【英文标题】:Optimizing UIScrollView with subviews 【发布时间】:2012-12-13 19:42:03 【问题描述】:

我有 UIScrollView 的问题,我尝试用自己的行(单独的笔尖)创建类似表格的东西。 1-10 行一切正常,但超过 20 个元素会出现问题。该应用程序开始运行缓慢,并且特技。是否有任何解决方案可以优化 100-200 个自己的子视图的滚动视图?

【问题讨论】:

【参考方案1】:

使用UITableView。这正是它的设计目的。

【讨论】:

所以这意味着没有任何方法可以优化 uiscrollview 以显示该视图数? UITableViewUIScrollView 的子类,专门针对滚动多个子视图进行了优化。【参考方案2】:

UITableView 和 UICollectionView 都通过删除不再需要的子视图并将它们放入重用队列来进行优化。通过重用这些视图,系统不必创建和销毁它们的支持层,而是可以重用它们。这样一来,屏幕上的子视图就可以容纳的尽可能多。

通常,您希望在滚动视图子类的 layoutSubviews 或相应的 didScroll 委托方法中添加/删除可见子视图。我个人更喜欢 layoutSubviews,因为它在事件链中更早一些。

基本上,只要至少 1 px 的子视图出现在滚动视图的边界内,您就会从重用队列中获得一个可重用的子视图,并在其像素不再可见时立即移除子视图。

如果您使用 UITableview 或 UICollectionView 而不是普通的滚动视图,它们会提供一种机制来在 NIB 中为某些重用标识符注册视图,然后出队将自动从 NIB 加载子视图的新实例,没有队列或出队之一如果有的话。

【讨论】:

以上是关于使用子视图优化 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

表格性能优化

优化视图引用 SQL Server 中的视图的策略?

Oracle优化笔记

IOS / Autolayout可能只用于顶视图而不设置子视图?

ViewController 添加为子视图太​​快发布

如何优化多表连接视图以获得更快的响应?