在应用程序启动时,我直接在 CGBitmapContext
上绘制内容,将其转换为 CGImage
,然后将其设置为 viewDidAppear 中的 View 层
。
它实际上相当快,但由于 Apple 要求向应用程序添加启动图像,因此我添加了一个屏幕外观的静态图像作为启动图像。
然而,接下来发生的是当应用程序启动时,启动图像显示,但屏幕将在 0.5 到 1 秒后变黑,我认为是由于 viewDidLoad
启动和 viewDidAppear
开始运行,但在开始时,屏幕一片空白。
然后在 0.5 秒后,一切都显示出来,但这会产生白屏的“闪光”。
所以看起来至少有两个选项,它们是
只是让 Launch 图像完全空白,但我不确定 Apple 是否会拒绝该应用程序,因为他们想要“应用程序初始外观的静态图像”......但我想知道是否初始图像显示得如此之快(0.5 到 1 秒,他们还会介意吗?)
另一种选择是将所有绘图从
viewDidAppear
移动到viewDidLoad
,但我发现viewDidLoad
中缺少一些信息>,比如viewDidLoad
中的self.view.bounds
是{{0, 0}, {768, 1004}}
,它变了到viewDidAppear
中正确的{{0, 0}, {320, 460}}
(正在 iPhone 4S 上测试)。
所以我认为 viewDidLoad
中的某些 View 信息尚未正确设置,这是一个进退两难的问题。一种方法可能是检查它是 iPad 还是 iPhone,并对 self.view.bounds
值进行硬编码,但是否有更好的方法来做到这一点?
最佳答案
在您在 viewWillAppear 期间启动的后台线程上创建您的 CGImage,然后您将拥有尺寸。
也许在 viewDidLoad 中将 View 背景设置为与您的启动图像相同,这样当您绘制 CGImage 时,用户就不会看到闪烁。
关于ios - 在 iOS 上,当某些维度信息不可用时,我们如何在 viewDidLoad 中在屏幕上绘制内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012869/