使用子视图优化UIScrollView

时间:2012-12-13 19:42:03

标签: objective-c uiview uiscrollview subviews

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

UITableView和UICollectionView都通过删除不再需要的子视图并将它们放入重用队列来进行优化。通过重用这些视图,系统不必创建和销毁其后备层,但可以重用它们。这样,您只能在屏幕上看到尽可能多的子视图。

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

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

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