我正在寻找一种逐渐加载UIViewController内容的技术,以使应用程序感觉更“灵巧”。我在将viewcontroller推入堆栈时注意到了这个问题,在等待将其推入堆栈时会有明显的延迟。UIViewController的View包含一些具有透明性的复杂子视图。我想知道是否在viewDidAppear之后创建它们并“淡入”它们,然后过渡会显得更加平滑。

我在Apple的Trailers应用程序中注意到了类似的效果。在该应用中轻按影片时,将进入详细视图,并且事实之后将加载内容。造成延迟的部分原因是,他们在显示详细信息之前先下载了详细信息,但无论是否已经下载,它们似乎总是淡入那张大图像。

有没有人在此方面或在总体上改善UIViewController负载方面取得了很大的成功。

最佳答案

在开始进行更改以提高性能之前,请使用Instruments来分析您的应用程序并找出问题的根源。是在绘制复杂的子视图吗?是否正在加载数据?唯一知道的方法就是测量。

您没有理由不能按照您的建议去做-让视图控制器创建/加载其主视图,然后再添加复杂的子视图。您的视图控制器可以随意添加和删除子视图。这会使应用程序变得更生动吗?它可能-类似于Apple内置于iOS的默认图像策略,其中OS加载界面图片以使设备看起来具有响应性,然后在准备好后替换真实界面。另一方面,如果用户仍然需要等待创建复杂的子视图才能使用该视图,那么查看其余视图可能无济于事。

另一个可能性(再次是在测量之后)可能是在用户需要它们之前创建视图。这与iOS应用通常用于节省内存和功能的惰性初始化背道而驰,但是如果您知道将需要这些视图,并且可以预期用户 Activity 将在需要之前停滞不前,则可能是由于增加应用程序视在速度的好方法。获取视图控制器以创建/加载其视图所需要做的就是访问其view属性。

10-05 21:00
查看更多