是否可以在不将相同图像资源放在多个位置的情况下,将应用程序LaunchImage用作通用iOS应用程序中的背景?

我无法访问LaunchImage中的Images.xcassets文件,因此我创建了两个新的图像集“Background Portrait”和“Background Landscape”(因为似乎无法将风景图像和肖像图像放入同一集合中)。

虽然此解决方法可以完成工作,但我不希望将每个图像两次包含到应用程序中。这也具有很高的维护成本。

感谢您提供有关如何访问当前设备的LaunchImage的任何建议。

GCOLaunchImageTransition必须已完成iOS

最佳答案

您可以使用启动镜像,而不必两次包含它们。关键是,当您使用 Assets 目录时,应用程序 bundle 包中包含的图像的文件名是标准化的(某种),并且可能与您命名的原始文件无关。

特别是,当您使用LaunchImage图像集时,最终出现在应用程序 bundle 包中的文件的名称如下

  • LaunchImage.png
  • [email protected]
  • [email protected]
  • [email protected]
  • [email protected]
  • LaunchImage-700-Landscape@2x~ipad.png

  • 尤其注意,它们没有命名为Default.png或该名称的任何变体。即使那就是您所说的文件。将它们放到 Assets 目录中的一口井中后,它们就会以标准名称出现在另一端。

    因此[UIImage imageNamed:@"Default"]无法使用,因为应用程序 bundle 包中没有此类文件。但是,[UIImage imageNamed:@"LaunchImage"]可以工作(假设您已经很好地填充了iPhone Portrait 2x或iOS7之前版​​本的iPhone Portrait 1x)。

    该文档表明imageNamed:上的UIImage方法应自动神奇地选择正确的版本,但是我认为这仅适用于除启动图像以外的其他图像集-至少我没有使它能够完全正确地工作(可能只是我没有做对的事情)。

    因此,根据您的实际情况,您可能需要进行一些反复试验才能获得正确的文件名。在模拟器中构建并运行该应用程序,然后您始终可以在~/Library/Application Support/iPhone Simulator的相应子目录中查找,以验证该应用程序包中的实际文件名是什么。

    但是,重点再次是,不需要包括图像文件的重复项,并且您不需要对Copy Bundle Resources构建阶段进行任何调整。

    关于ios - iOS 7/Xcode 5 : Access device launch images programmatically,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19410066/

    10-11 15:37