使用子视图优化 UIScrollView
Posted
技术标签:
【中文标题】使用子视图优化 UIScrollView【英文标题】:Optimizing UIScrollView with subviews 【发布时间】:2012-12-13 19:42:03 【问题描述】:我有 UIScrollView 的问题,我尝试用自己的行(单独的笔尖)创建类似表格的东西。 1-10 行一切正常,但超过 20 个元素会出现问题。该应用程序开始运行缓慢,并且特技。是否有任何解决方案可以优化 100-200 个自己的子视图的滚动视图?
【问题讨论】:
【参考方案1】:使用UITableView
。这正是它的设计目的。
【讨论】:
所以这意味着没有任何方法可以优化 uiscrollview 以显示该视图数?UITableView
是UIScrollView
的子类,专门针对滚动多个子视图进行了优化。【参考方案2】:
UITableView 和 UICollectionView 都通过删除不再需要的子视图并将它们放入重用队列来进行优化。通过重用这些视图,系统不必创建和销毁它们的支持层,而是可以重用它们。这样一来,屏幕上的子视图就可以容纳的尽可能多。
通常,您希望在滚动视图子类的 layoutSubviews 或相应的 didScroll 委托方法中添加/删除可见子视图。我个人更喜欢 layoutSubviews,因为它在事件链中更早一些。
基本上,只要至少 1 px 的子视图出现在滚动视图的边界内,您就会从重用队列中获得一个可重用的子视图,并在其像素不再可见时立即移除子视图。
如果您使用 UITableview 或 UICollectionView 而不是普通的滚动视图,它们会提供一种机制来在 NIB 中为某些重用标识符注册视图,然后出队将自动从 NIB 加载子视图的新实例,没有队列或出队之一如果有的话。
【讨论】:
以上是关于使用子视图优化 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章