我正在寻找一种技术来逐步加载UIViewController的内容,使应用程序感觉“更快”。在将视图控制器推入堆栈时,我注意到了这个问题,在等待它推入时有明显的延迟.UIViewController的View有一些具有透明度的复杂子视图。我想知道如果我在viewDidAppear之后创建它们并且'淡化'它们,那么转换将显得更加平滑。
我注意到Apple的预告片应用程序中有类似的效果。在该应用程序中点击电影时,详细信息视图会推入,并且内容会在事后加载。这种延迟的一部分原因是因为他们在显示细节之前正在下载细节,但似乎它们总是淡化大图像是否已经下载。
有没有人在这方面取得了很大的成功,或者通常改进了UIViewController的负载。
答案 0 :(得分:1)
在开始进行更改以提高性能之前,请使用Instruments来分析您的应用并找出问题的确切位置。是在绘制复杂的子视图吗?是在加载数据吗?要知道的唯一方法就是衡量。
没有理由你不能按照你的建议做 - 让视图控制器创建/加载其主视图,然后添加复杂的子视图。您的视图控制器可以随意添加和删除子视图。这会让应用程序感觉更快吗?它可能 - 它类似于Apple在iOS中内置的默认图像策略,操作系统会加载界面图片以使设备看起来响应,然后在准备就绪后替换真实界面。另一方面,如果用户仍然需要等待在视图有用之前创建复杂的子视图,那么查看视图的其余部分可能没有多大帮助。
另一种可能性(再次,在测量之后)可能是在用户需要之前创建视图。这与iOS应用程序通常用于节省内存和电源的延迟初始化相反,但如果您知道您将需要视图并且在需要之前可以预期用户活动会暂停,则可能是提高应用程序表观速度的好方法。要让视图控制器创建/加载视图,您需要做的就是访问其view
属性。