我有一个应用程序必须加载并在屏幕上呈现相当数量的内容(主要是从数据库加载)。
我不会在这里发布所有代码,但实际上它只是构建了一组添加到UIScrollView对象的UIView对象。没有什么太复杂,只是加载了很多东西。这当前需要一秒左右渲染一切(在主线程上运行)。
我希望在加载发生时显示一个活动指示器,而我认为这样做的最佳方法是让后台线程需要很长时间的方法和“报告” “当它完成时。”
问题是这个。我知道所有实际绘图都是由主线程完成的,所以是否可以创建一个新线程并构建一组UIView对象然后在屏幕上绘制?
答案 0 :(得分:3)
有一个很棒的WWDC2012会话视频,完全符合您的用例:
WWDC2012 Building Concurrent User Interfaces in iOS
基本上诀窍是准备并在另一个队列上绘制视图并将其发送到主队列。
答案 1 :(得分:0)
你是对的。所有UI工作都应该在主线程上完成。在您的情况下,我建议您添加滚动视图可见的UIView
对象,并仅在scrollview开始移动到该点时添加其余对象。您可以在视图即将可见时继续添加视图,并从滚动视图中删除不需要的任何视图。这通常有助于更好的内存管理。