2014-09-21 33 views
31

我正在尝试为新的6和6+设备更新我的应用程序。Xcode 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,因为屏幕尺寸不同。

我错过了什么?

+0

也许扩展了Xcode 6及以上版本的问题的主题? (看我的答案,找出我为什么建议它) – 2015-08-19 11:28:57

回答

5

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

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

+2

是的,这是一个有用的解释如何6+规模。不过,我相信这并不能回答我的问题。经过实验后,我发现在Xcode 6.0.1中,iPhone 6图像应该进入\ @ 2×井。我认为这是一个错误,因为现在没有地方可以放置用于iPhone 4s的2倍图像(它仍然支持iOS8) 此外,图像集中没有放置图像的位置显示iPhone 6和6+的缩放模式。 – 2014-09-26 00:43:27

+0

我正在构建一款通用应用程序,根据链接中的说明,我的iPhone 5/5s和iPhone 6图像都是从Retina 4 2x拍摄的(320x568点)拍摄的。这与用于iPhone 4s的2x井是分开的。在渲染之前,iPhone 6图像被上采样到750x1334像素。 – 2014-09-26 07:20:40

+2

@KurtSchwartz,我站在更正。发布我的评论后,我进行了双重检查,iPhone 6确实使用了适用于iPhone 4s的2x图像 - 而不是来自Retina 4 2x的图像。 PaintCode链接看起来是错误的,它看起来像一个小错误。然而,它并没有太大的区别 - 无论是在iPhone 6(放大)还是其他型号之间共享图像。 – 2014-09-26 07:43:24

6

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

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

我工作解决此问题通过创建两个图像集:
1)iPhone 6 /在标准模式下6plus在3×条目
750x1334在2×条目


1242x2208图像) iPhone 6/6Plus在缩放模式或iPhone 5

1125x2001为3×条目
640x1136为2×条目
640x1136用于R 4-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"]]; 
} 

这是难看的,我讨厌具有做到这一点,因为图像集应该消除这种代码。我还没有看到更好的解决方法,我提交了一个雷达(雷达18463463)的bug。

+1

谢谢你。我拉着头发试图了解为什么6+在缩放模式下加载全尺寸图像。 – Malakim 2015-01-14 20:31:42

+0

谢谢你。这非常令人沮丧。我担心的是,Xcode现在已经更新了iWatch,但没有修复这个bug的迹象。它必须是一个错误,正确的...?我将它报告为一个。希望他们能解决这个问题。 – pingin 2015-05-13 22:40:14

1

刚刚为此问题找到了一个新的解决方案。使用2倍的视网膜4图像,并设置全屏图像视图的内容模型来扩展方面填充将使它在iPhone 4s和iPhone 6上工作。

+4

这不是一个好的解决方案,因为它可能会让图像变形。 – Ali 2015-03-31 16:18:13

5

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

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加 - 3x 1GB/Any瓷砖

为了达到这个目的,我检查了Devices - iPhone,Memory 1GB。正如你可以看到iPhone 5/5S/6之间没有图形的区别。也许玩Metal 1v2/2v2的设置可能会有所区别,但这看起来对我来说太疯狂了。 Knowledge reference starts at 10:50

我现在从WWDC那里得到了什么,我们应该不要考虑解决方案/设备/设备方向的细节问题,而是要关注尺寸类别(除了6 Plus以外,iPhone尺寸类别相同),但如果有人仍然出于某种原因,需要该设备特定的图形,并希望使用资产目录(这是伟大的),然后在这里你得到我目前发现的(Xcode 7)。

+3

与您一致,无法区分iPhone 5/5S/6是完全不可思议的 – hash3r 2015-10-16 16:08:38