在iOS上,当某些维度信息不可用时,我们如何在viewDidLoad中在屏幕上绘制内容?

时间:2012-08-17 20:39:44

标签: ios uiviewcontroller uikit

在应用启动时,我直接在CGBitmapContext上绘制内容,将其转换为CGImage,然后将其设置为viewDidAppear中的视图层。

它实际上非常快,但由于Apple需要在应用程序中添加启动图像,我添加了一个静态图像,显示屏幕看起来像启动图像。

然而,接下来发生的事情是,当应用启动时,启动图像会显示,但屏幕将在0.5到1秒后消隐,我认为由于viewDidLoad启动而{{1} }开始运行,但在开始时,屏幕全部为空白。

然后在0.5秒之后,一切都会出现,但这会产生一个"闪光灯"白屏。

所以看起来至少有两个选项,分别是

  1. 只是让启动图像完全空白,但我不确定Apple是否会拒绝该应用,因为他们喜欢应用最初看起来像的静态图像"。 ..但我想知道初始图像是否显示得如此之快(0.5到1秒,他们还会介意吗?)

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

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

1 个答案:

答案 0 :(得分:2)

在viewWillAppear期间启动的后台线程上创建CGImage,然后就会有尺寸。

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