31

我正在尝试为新的 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 plus 的。我看不出retina-4 井如何同时用于iPhone 5 和iPhone 6,因为屏幕尺寸不同。

我错过了什么?

4

5 回答 5

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 条目
640x1136 用于 R4-2x 条目

为了完成这项工作,我需要确定该设备是否是新设备之一以及它们是否处于缩放模式。基于此信息,我从正确的图像集中加载图像。

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

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"]];
}

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

于 2014-10-04T04:37:07.750 回答
5

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

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

于 2014-09-22T12:16:21.333 回答
5

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

于 2015-03-16T07:51:52.807 回答
5

我在这里放了一些我对 iPhone 设备所做的观察(也许有人会觉得它有帮助):

  1. iPhone 4S -2x Any/Any瓷砖
  2. iPhone 5 -2x 1GB/Any瓷砖
  3. iPhone 5S -2x 1GB/Any瓷砖
  4. iPhone 6 -2x 1GB/Any瓷砖
  5. iPhone 6 Plus -3x 1GB/Any磁贴

为此,我检查了设备 - iPhone,内存 1GB。如您所见,. 之间的图形没有区别iPhone 5/5S/6。也许玩设置Metal 1v2/2v2可以区分,但这在我看来太疯狂了。知识参考 10:50 开始

我现在从 WWDC 得到的东西,我们不应该考虑分辨率/设备/设备方向的细节,而是关注尺寸等级(除了 6 Plus 之外的 iPhone 相同),但如果有人仍然出于某些原因需要该设备特定的图形并且想要使用资产目录(非常棒),那么在这里你可以得到我目前发现的可用目录(Xcode 7)。

于 2015-08-19T11:27:31.827 回答
1

刚刚为这个问题找到了一个新的解决方案。使用 Retina 4 图像 2 倍并将全屏图像视图的内容模型设置为缩放纵横比填充将使其在 iPhone 4s 和 iPhone 6 上都能正常工作。

于 2015-01-22T17:11:17.763 回答