是否可以在不将相同图像资源放在多个位置的情况下,将应用程序LaunchImage用作通用iOS应用程序中的背景?
我无法访问LaunchImage
中的Images.xcassets
文件,因此我创建了两个新的图像集“Background Portrait”和“Background Landscape”(因为似乎无法将风景图像和肖像图像放入同一集合中)。
虽然此解决方法可以完成工作,但我不希望将每个图像两次包含到应用程序中。这也具有很高的维护成本。
感谢您提供有关如何访问当前设备的LaunchImage的任何建议。
GCOLaunchImageTransition必须已完成iOS
最佳答案
您可以使用启动镜像,而不必两次包含它们。关键是,当您使用 Assets 目录时,应用程序 bundle 包中包含的图像的文件名是标准化的(某种),并且可能与您命名的原始文件无关。
特别是,当您使用LaunchImage图像集时,最终出现在应用程序 bundle 包中的文件的名称如下
尤其注意,它们没有命名为
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/