我正在使用 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/