1

在应用程序启动时,我直接在 a 上绘制东西CGBitmapContext,将其转换为CGImage,然后将其设置为viewDidAppear.

它实际上相当快,但由于 Apple 需要向应用程序添加 Launch 图像,所以我添加了一个静态图像,显示屏幕的样子作为 Launch 图像。

然而,接下来发生的事情是,当应用程序启动时,启动图像出现,但屏幕会在 0.5 到 1 秒后黑屏,我认为是由于viewDidLoad启动并viewDidAppear开始运行,但在开始时,屏幕是全部空白。

然后在 0.5 秒后,一切都显示出来,但这会产生白屏“闪烁”。

所以看起来至少有两个选择,它们是

  1. 只是让启动图像完全空白,但我不确定Apple是否会拒绝该应用程序,因为他们想要“应用程序最初外观的静态图像”......但我想知道初始图像是否显示得这么快(0.5 到 1 秒,他们还会介意吗?)

  2. 另一种选择是将所有绘图从viewDidAppear移至viewDidLoad,但我发现其中缺少某些信息viewDidLoad,例如self.view.boundsviewDidLoadis 中{{0, 0}, {768, 1004}},并且更改为正确{{0, 0}, {320, 460}}的 in viewDidAppear(正在iPhone 4S上进行测试)。

所以我认为某些视图信息尚未正确设置viewDidLoad,这是一个两难的选择。一种方法可能是检查它是 iPad 还是 iPhone,并对self.view.bounds值进行硬编码,但有更好的方法吗?

4

1 回答 1

2

在 viewWillAppear 期间启动的后台线程上创建 CGImage,然后您将获得尺寸。

也许将 viewDidLoad 中的视图背景设置为与您的启动图像相同,以便在您绘制 CGImage 时,用户不会看到闪烁。

于 2012-08-17T20:49:14.627 回答