有没有办法在通用iOS应用程序中使用apps LaunchImage作为背景,而不将相同的图像资源放在多个地方?

我无法访问Images.xcassets中的LaunchImage个文件,所以我创建了两个新的图像集"背景肖像"和"背景风景"(因为似乎没有办法将风景和肖像图像放在同一集中).

虽然这种变通方法可以解决问题,但我不愿意将每个图像都包含到应用程序中两次.这也有很高的维护成本.

如果您对如何访问当前设备的LaunchImage有任何建议,我们将不胜感激.

GCOLaunchImageTransition人必须为iOS完成了这项工作<7.

推荐答案

您可以使用启动映像,而无需包含两次.关键是,当您使用assets资源 目录时,应用程序包中包含的图像的文件名是(某种程度上)标准化的,可能与您对原始文件的命名无关.

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

  • 启动图像.巴布亚新几内亚
  • LaunchImage@2x.png
  • emits 图像-700@2x.png
  • emits 图像-568h@2x.png
  • emits 图像-700-568h@2x.png
  • emits 图像-700-Landscape@2x~ipad.巴布亚新几内亚

请特别注意,它们没有被命名为Default.png或其任何变体.即使这就是你所说的文件.一旦你把它们放在assets资源 目录中的wells个目录中,它们的另一端就会有一个标准名称.

所以[UIImage imageNamed:@"Default"]不起作用,因为应用包中没有这样的文件.不过,[UIImage imageNamed:@"LaunchImage"]也可以(假设你已经填充了iPhone肖像2x井或pre iOS7 iPhone肖像1x井).

文档表明,UIImage上的imageNamed:方法应该自动神奇地 Select 正确的版本,但我认为这只适用于除启动映像之外的映像集——至少我还没有让它正常工作(could just be me not doing something right).

因此,根据具体情况,您可能需要进行一些try 和错误操作,以获得正确的文件名.在模拟器中构建并运行应用程序,然后您可以始终查看相应的子目录~/Library/Application Support/iPhone Simulator,以验证应用程序包中的实际文件名.

但同样重要的是,不需要包含图像文件的副本,也不需要对Copy Bundle Resources构建阶段进行任何调整.

Objective-c相关问答推荐

如何以编程方式获取iphone的IP地址

使用 AVAudioplayer 在后台播放音乐

NSBundle pathForResource 为 NULL

是否可以 suppress Xcode 4 静态分析器警告?

Objective-C 对象的列表 Select 器

dispatch_get_global_queue 和 dispatch_queue_create 有什么区别?

[Facebook-iOS-SDK 4.0]如何从FBSDKProfile获取用户邮箱

Objective C const NSString * vs NSString * const

Objective C 静态类变量

使用正则表达式在 Xcode 中查找/替换

了解按位与运算符

在 ios8 中没有调用 didRegisterForRemoteNotificationsWithDeviceToken,但是 didRegister...Settings 是

自定义 UINavigationBar 背景

iOS 8 Mapkit Objc 无法获取用户位置

使用 OpenCV 在 iOS 中进行透视变换 + 裁剪

Core Data使用原始数据类型的标量属性复选框

在 UITextField 文本上投影

所有异常断点在模拟器上无缘无故停止

将数据传回前一个视图控制器

围绕其中心旋转 UIView 保持其大小