Ios 如何在运行时使用Swift扩展UIScrollView?

Ios 如何在运行时使用Swift扩展UIScrollView?,ios,swift,uiscrollview,Ios,Swift,Uiscrollview,我正在使用从JSON动态加载数据的UIScrollView,并根据收到的数据显示创建的视图 var view = CustomView(frame: CGRectMake(5, scrollHeight, self.view.frame.width-10, 0), customClass: CustomClass) scrollView.addSubview(view) scrollHeight += view.frame.height + 25

我正在使用从JSON动态加载数据的
UIScrollView
,并根据收到的数据显示创建的视图

        var view = CustomView(frame: CGRectMake(5, scrollHeight, self.view.frame.width-10, 0), customClass: CustomClass)

        scrollView.addSubview(view)
        scrollHeight += view.frame.height + 25
        scrollView.contentSize.height += view.frame.height+25
但是我有太多的元素,并且加载所有视图的时间太长,例如,我怎么能只加载其中的10个,而其余的必须在滚动
UIScrollView
时加载? 如果我需要使用手势识别器来获取滚动事件或其他信息,请编写一个示例

编辑:

我实现了scrollViewDidScroll方法,但方式如下:

func scrollViewDidScroll(scrollView: UIScrollView) {

    if scrollView.contentOffset.y > (scrollView.contentSize.height - 500) {
            self.setViews(self.viewsArray)
    }
}

它工作正常,但并不顺利,加载需要时间,在这段时间内,应用程序会冻结一段时间,我如何才能在运行时实现添加元素的更顺畅的行为?

我认为解决这一问题的一个好方法是专注于多线程。您可以在后台线程中为项目执行所有逻辑,然后在主线程上准备就绪时添加它们。因此,当他们准备好时,您将一次添加一个项目。。。我认为这会改善行为,但在你尝试之前,你永远不会知道:)
我希望这会有所帮助!


(如果您以前没有在iOS中使用过线程,那么您应该研究
调度
,例如
调度异步(queue:dispatch\u queue\t,block:dispatch\u block\t)

您使用的是UITableView吗??!最初只需添加10个项目,并在UIScrollView的scrollViewDidScroll:delegate方法中验证scrollOffset,如果它大于(view.frame.height+25)*10-scrollView.frame.size.height的大小,然后,仅在未加载的情况下加载其余的视图。你能写一个关于使用此方法的示例回答吗