ios - @3x 图像在 XIB 中的 iPhone 6 或 5S 或 5 上错误地使用了 "Use as Launch Image"选项集

标签 ios objective-c ios8

在一个干净的全新 iOS 项目中,我已经:

  • 向项目“[email protected]”和“[email protected]”添加了 2 个图像
  • 添加了一个名为“LaunchScreen.xib”的 XIB
  • 选中了 XIB 的“用作启动屏幕”选项
  • 在LaunchScreen.xib中添加了一个UIView subview ,并将其图像名称设置为“background.png”
  • 在项目设置中,在目标“常规”设置下,我已将“启动屏幕文件”设置为“LaunchScreen”

现在,当我在下面的任何设备列表上启动应用程序时,@3x 图像都会显示在生成的启动屏幕中,而此时肯定应该使用 @2x 图像。

有问题的设备(全部使用@3x资源):

  • iPhone 5(iOS 8.0.0)
  • iPhone 6(iOS 8.0.0)
  • iPhone 6(iOS 8.0.2)
  • iPhone 5 模拟器 (iOS 8.0.0)
  • iPhone 6 模拟器 (iOS 8.0.0)

请注意,@2x 图像与 @3x 图像不同,因此我可以轻松识别正在使用哪一个图像。

起初我以为这是模拟器的一个错误,当它也发生在真实设备上时,我感到很震惊。

我认为这是另一个 iOS8 错误,但我猜想也有可能由于启动屏幕被缓存为某种静态图像而导致其预期行为。

有什么想法或潜在的解决方案吗?

编辑:

为了他人的利益,我随后发现,如果将图像添加到 Images.xcassets 图像集中,则实际上会观察到正确的行为。然而,这对我们来说不是一个理想的解决方案,因为我们有一个非常具体的图像导出过程,这意味着我们没有在项目中使用 Images.xcassets(应用程序中有数千张图像)。

我现在还向 Apple 提出了 Radar #18513968

http://openradar.appspot.com/18513968

最佳答案

我自己刚刚尝试过,并得到了与您提到的相同的行为。

通过将启动图像源设置为“使用 Assets 目录”,并添加启动图像,您可以让每个设备显示其特定的背景。一些屏幕截图可以在这里看到:

Supporting iPhone 6 and iPhone 6+ with different launch/splash screen image for iPad Portrait and Landscape orientations

仔细研究一下,我发现一个网站提到:

http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

"You can use the new adaptive UI features in Interface Builder to fit your layout to different screen sizes. If your scene requires screen-size-specific images, use asset catalogs to define different images per size class."

也许这是唯一的方法。

关于ios - @3x 图像在 XIB 中的 iPhone 6 或 5S 或 5 上错误地使用了 "Use as Launch Image"选项集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139254/

相关文章:

带有 ECSlidingViewController 组件的 iOS 6 和 iOS 7 的 iOS 目标应用程序

objective-c - ios8 中无法更改 cell.textLabel 的字体

iOS模拟器最大图片应该

ios - 抽象出动画时知道动画何时完成 iOS

objective-c - 进行 22 种不同构建的最有效方法

iOS 8 MKMapView 用户定位请求失败

ios - 桥接 header 错误 - "xxx-Bridging-Header.h"文件在 SWIFT 中不存在

ios - 在提交到 Appstore 之前,如何将应用程序定位为在 iPad 2 或更新版本(不是 iPad 1)上运行?

ios - swift ,让我知道了这个 : interfaceOrientation was deprecated in iOS 8. 0

iphone - NSSound 在 iPhone 上未声明?