Xcode 6.1为iPhone 6和4s模拟器使用相同的2x图像



我正在为图像使用资产目录。我的应用程序包含全屏教程页面。在images.xcassets下,iPhone的单个图像资产有4个版本。1x、2x、Retina 4 2x和3x。

我使用的是Xcode 6.1。当应用程序在4s模拟器上运行时,它会使用2x版本的图像。iPhone 6模拟器也使用了相同的图像。无论我将"部署目标"设置为7.1、8.0还是8.1,都会发生同样的情况。

我附上了一个测试项目来解释这个问题。如果你在模拟器中运行该项目,iPhone 4s和iPhone 6都会显示2x版本的图像。

https://www.dropbox.com/s/8gon4czetkya485/AssetCatalogTest.zip?dl=0

如何使用资产目录轻松显示4和6的不同图像?

看起来没有办法解决这个问题。我尝试从启动映像复制规则,资产目录会删除启动映像使用的667h和736h子类型的映像。

你可能认为这会奏效,但事实并非如此:

{
  "images" : [
    {
      "idiom" : "iphone",
      "scale" : "2x",
      "filename" : "4.png"
    },
    {
      "idiom" : "iphone",
      "filename" : "6.png",
      "subtype" : "667h",
      "scale" : "2x"
    }
  ]
}

你最好的方法是老式的方法。使用test-667等名称为每个尺寸创建图像,并执行以下操作:

[UIImage imageNamed:[NSString stringWithFormat:@"test-%g", [[UIScreen mainScreen] bounds].size.height]]

遗憾的是,我们应该更加小心使用文档。

subtype参数仅适用于启动图像类型,不适用于任何其他图像集类型

请看这两个链接来证明:

图像集类型

启动图像类型

原因是iPhone 4s/5/5/5S和6使用了2倍时间。因为6 Plus将使用3倍版本。

我在全屏图像方面也遇到了同样的问题。但我还没有找到合适的东西,所以我写了一个类别来解决这个问题。你可以在github上找到它。它使用了在应用程序包中创建多个图像的老式方法,但它允许为不同的习惯用法、方向和屏幕设置不同的图像。

最新更新