Xcode 6特定于设备的资产目录

时间:2014-09-21 00:49:06

标签: ios iphone xcode asset-catalog

我正在尝试为新的6和6+设备更新我的应用。

我为新的iPhone尺寸(6和6+)添加了启动图像。资产目录中有6和6+的条目。没问题。

我还有一些我需要添加的全屏视图叠加图像。我已经在@ 2x(iPhone 4s)和R4(iPhone 5 5s 5c)中有这些图像。我已经以新的分辨率尺寸创建了图像,但我不确定如何将它们添加到图像集中。

当我进入资产目录时,我可以在图像集中选择特定于设备,并且我会看到iPhone,retina-4和iPad的条目。拖曳井有1x,2x,Retina 4 2x和3x。

我的问题 - 我应该在哪里放置iPhone 6的图像?显然3x是6加。我不知道视网膜4井如何用于iPhone 5和iPhone 6,因为屏幕尺寸不同。

我错过了什么?

5 个答案:

答案 0 :(得分:6)

我非常确定这是Xcode 6中的一个错误。当您从资产目录图像集加载图像时,无论是缩放还是标准显示,您都将获得iPhone 6+的3x条目模式。对于iPhone 6,您将始终在两种模式下获得2x条目。对于iPhone 4s,您还可以获得2x条目。

所有这些设备都具有不同的缩放比例和宽高比,因此这对于像素精确的图像是不可接受的。我的图像都是全屏的,并且是覆盖的,因此在缩放模式下我看到的位置不正确。

我通过创建两个图像集解决了这个问题:
1)标准模式下的iPhone 6 / 6plus
     3x条目中的1242x2208图像
      2x条目中的750x1334

2)iPhone 6 / 6Plus处于缩放模式或iPhone 5
     1125x2001为3x入口
      640x1136为2x入口
      R4-2x条目为640x1136

为了使其工作,我需要确定设备是否是新设备之一以及它们是否处于缩放模式。根据这些信息,我从正确的图像集加载图像。

这是我用来确定设备是否是缩放/标准模式中新设备之一的代码:

UIScreen *screen = [UIScreen mainScreen];
if (screen.scale == 3 && screen.currentMode.size.width == 1242 ||
    screen.scale == 2 && screen.currentMode.size.width == 750) {
    self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"StdImageSet"]];
} else {
    self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ZoomedImageSet"]];
}

这很丑陋,我讨厌必须这样做,因为图像集应该消除这种代码。我没有看到更好的解决方法,而且我已经提交了雷达(雷达18463463)错误。

答案 1 :(得分:5)

我发现这有用:http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

似乎iPhone 6将使用重新采样的@ 2x(iPhone 5)图像。此外,图像集的属性(实用程序窗格)可让您在“通用”按钮之间切换。 (x1,x2,x3)和'特定于设备的'图像井。

答案 2 :(得分:5)

这真烦人。对于特定于设备的设置,我们都希望像LaunchImage Set中的菜单,不同屏幕尺寸的不同占位符。

答案 3 :(得分:5)

我在这里放置了一些我为iPhone设备做过的观察(也许有人会发现它有用):

  1. iPhone 4S - 2x Any/Any tile
  2. iPhone 5 - 2x 1GB/Any tile
  3. iPhone 5S - 2x 1GB/Any tile
  4. iPhone 6 - 2x 1GB/Any tile
  5. iPhone 6 Plus - 3x 1GB/Any tile
  6. 为了达到这个目的,我检查了设备 - iPhone,内存1GB。如您所见,iPhone 5/5S/6之间的图形没有区别。也许玩Metal 1v2/2v2的设置可以区分,但这对我来说太疯了。 Knowledge reference starts at 10:50

    我现在从WWDC得到的东西我们应该考虑不是分辨率/设备/设备方向细节,而是专注于尺寸等级(除了6 Plus外,对于iPhone来说是相同的)但是如果有人因某些原因仍然需要设备特定的图形,并希望使用资产目录(这是伟大的)然后在这里你得到我现在可用的(Xcode 7)。

答案 4 :(得分:1)

刚刚为此问题找到了新的解决方案。使用视网膜4图像2倍并设置全屏图像视图的内容模型以扩展方面填充将使其在iPhone 4和iPhone 6上都能正常工作。