使用子视图优化UIScrollView



我对UIScrollView有问题,我尝试创建类似于具有自己行的表(单独的笔尖)。1-10行的情况下一切都很好,但超过20个元素就会出现问题。应用程序开始工作时速度缓慢,而且速度很慢。有什么解决方案可以优化100-200个自己的子视图的滚动视图吗?

使用UITableView。这正是它的设计初衷。

UITableView和UICollectionView都在通过删除不再需要的子视图并将其放入重用队列来进行优化。通过重用这些视图,系统不必创建和破坏它们的底层,而是可以重用它们。通过这种方式,您在屏幕上只能拥有尽可能多的子视图。

通常,您希望在滚动视图子类的layoutSubview或相应的didSolloll委托方法中添加/删除可见子视图。就我个人而言,我更喜欢布局子视图,因为它在事件链中稍早。

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

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

最新更新