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

标签 ios swift uiscrollview

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

        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

但是我的元素太多,加载所有 View 的时间太长,如何才能只加载其中的 10 个,而其余的必须在滚动 UIScrollView 时加载? 如果我需要使用一些手势识别器来获取滚动事件或其他内容,请编写一个示例。

编辑:

我实现了scrollViewDidScroll方法,但是这样:

func scrollViewDidScroll(scrollView: UIScrollView) {

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

它工作正常,但不顺利,加载需要时间,并且在这段时间应用程序卡住了一会儿,我怎样才能实现在运行时添加元素的更流畅的行为?

最佳答案

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

(如果您之前没有在 iOS 中使用过线程,则应该查看 dispatch,例如 dispatch_async(queue:dispatch_queue_t, block:dispatch_block_t)).

关于ios - 如何使用 Swift 在运行时扩展 UIScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32715470/

相关文章:

ios - 单击后 UITableViewCell 调整大小,约束发生变化

ios - UITextView如何将光标保持在键盘上方

ios - 使用 iAds 提交新应用

iphone - 将 CGcolorRef 转换为 UIColor

ios - 使用自动布局时在 init 的 subview 中查看 Controller 动画?

ios - 资源不会在 iOS8 上加载,但会在 iOS9 上加载

ios - 如何计算UITextView中文本的高度?

arrays - 填充 UITableView 节标题标题,因为节 == 2?

Swift: "Freeze"在 scrollView 中弹跳

ios - 使滚动条在 UIScrollView (iOS7) 上始终可见?