Xcode 6 - xcassets 用于通用图片支持

53

目前正在进行一个通用的SpriteKit项目。我将支持以下设备:

iPhone 4/s、 iPhone 5/c/s、 iPhone 6、 iPhone 6+

iPad non-ret、 iPad retina

这是图片描述

我对iPhone部分感到困惑。我已经为四种不同的iPhone屏幕分辨率制作了背景精灵的四个版本。但哪个版本适用于哪个iPhone型号?

我知道3x适用于6+,而且我认为5/c/s适用于Retina 4 2x,但我不知道iPhone4/s和6应该使用哪个版本。有人知道吗?

另外,当我在xcassets文件中创建启动图像时,我会看到这些选项,其中包括我支持的所有设备。只是想知道为什么创建Image Set时也不是这种情况这是图片描述

此外,你们如何处理通用应用程序的图像/精灵?现在新的iPhone 6和6 plus已经上市,我还需要支持两种分辨率,这仍然令我感到困惑,因为我还是一个初学者。


请查看此链接 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1。 - Deepesh
请注意,您不能仅使用通用图像,您必须选择特定于设备的图像,这就是所有这些版本存在的原因 :) - cypres
1
Adobe Generator是从单个PSD文件中生成1x、2x、3x资源的好方法。在新的CC 2014版本中,您可以创建一个带有默认值的图层。假设您有一个带有视网膜(2x)图形的PSD文件,如果您将该图层命名为default ios/@2x + 50% ios/ + 150% ios/@3x,然后再添加您的资源图层,例如icon.png,它将会输出3个图标,分别根据比例缩放以适应1x和3x。 - cypres
1
有人知道为什么iPhone 6使用2x而不是像iPhone 5S一样使用Retina 4 2x吗? - Mrunal
这些选项在xCode上已经不存在了。现在它只有1x、2x、3x选项。 - Thilina Chamath Hewagama
5个回答

87

这有点令人困惑 - 这是我理解它的方式(这是针对顶部图像的):

  • 1x 图像适用于原始 iPhone 到 3GS - “标准”分辨率设备(3.5英寸屏幕)

  • 2x 图像适用于 iPhone 4 和 4S(3.5英寸 Retina 屏幕),也适用于 iPhone 6。

  • Retina 4 2x 适用于 iPhone 5 和 5s(4英寸 Retina 屏幕)

  • 3x 图像适用于新的 iPhone 6+(5.5英寸超级 Retina [3x] 屏幕)

我相信 iPhone 6(4.7英寸屏幕)将使用 Retina 4 2x 图像,但我需要测试一下。

另外,在我的 xcassets 文件中创建启动图像时,我看到了这些选项,其中基本上列出了我支持的所有设备。不知道为什么在创建图像集时不是这种情况

如果您比较这两个图像,下面的图像除了 1x 的 iPhone 图形以外,其他都具备了上面的图像。如果你只支持 iOS 7 及以上版本,那么你就不需要这个,因为 iOS 7 不运行在任何非 Retina 电话格式设备上。老实说,我不明白为什么顶部的图像还有一个 1x 的 iPhone 格式图形选项 - 或许是因为您在侧边栏中选中了“iPhone”框?

另外,你们如何处理创建通用应用程序的图像/精灵?

对于大多数非全屏图像(如标志),您只需要支持3种分辨率 - 标准(1x)、Retina(2x)和iPhone 6+(3x)。这些只是不同的图像质量,而不是不同的大小。因此,如果您在标准设备上有一张10x10的图片,则在Retina设备上需要一张20x20的图片,在iPhone 6+上需要一张30x30的图片。在所有设备上,它们将显示为一张10x10的图片。
我用于管理不同分辨率图标的好工具是 iConify
我使用所需最高尺寸(30x30 [@3x])创建它们,然后将其保存为png并将副本调整为20x20 [@2x]和10x10 [标准]。更好的解决方案是创建和使用矢量图形,这样可以更好地调整大小到任何尺寸。

1
感谢您的回答。对于像我这样的初学者来说,您的回答确实有所启发。不过我想指出一些事情。关于我发布的顶部图片,我尝试为iPhone(2x,Retina 4 2x和3x)的每个条目添加不同的精灵图像,以查看每个设备获取哪个精灵图像。似乎iPhone 6和iPhone 4从2x字段获取图像。它们共享相同的字段。这是否意味着我需要将我的iPhone 6精灵图像(实际上是背景图像)放在2x字段上?还是放在iPhone 4版本上? - aresz
8
iPhone 6所使用的是2x分辨率,而非Retina 4的2x分辨率。我已经测试过了 :)如果取消勾选Retina 4英寸专用,iPhone 5、5s、5c将采用与4s和6相同的2x分辨率。 - cypres
3
为什么 iPhone 6 使用的是 2x 分辨率,而不是像 iPhone 5S 一样使用 Retina 4 的 2x 分辨率? - Mrunal
1
@MaRco85 这是苹果公司的说法,请在此处查看 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW2 - Mrunal
2
@MaRco85:请查看此处最高票答案:https://dev59.com/KV8e5IYBdhLWcg3wNYQn 希望这能帮到你。 - Mrunal
显示剩余5条评论

36

在1x位置放置分辨率为320 x 480的图像。
在2x位置放置分辨率为640 x 960的图像。
在Retina 4 2x位置放置分辨率为640 x 1136的图像。
在3x位置放置分辨率为1242 x 2208的图像。

Retina 4 2x图像将升级到分辨率750 x 1334。
3x图像将降级到分辨率1080 x 1920。

您还可以访问以下链接获取启动屏幕图像:
http://www.paintcodeapp.com/news/iphone-6-screens-demystified
http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions


对于所有其他图像分辨率和大小:
https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/ https://developer.apple.com/ios/human-interface-guidelines/graphics/image-size-and-resolution/ https://developer.apple.com/ios/human-interface-guidelines/graphics/custom-icons/


如何使用Image.xcassets:
https://www.youtube.com/watch?v=_36Y6rDcKP0&list=PLXCowKcXAVgrCe2Lezv0acRf4adQLshv2

希望这会更有帮助。


1
@Ali 很抱歉回复晚了。正如您所知,在xcode6中,如果我们需要根据设备设置图像,则有4个选项可供选择。默认情况下,xcode设置1x、2x和3x图像。如果我们选择iPhone的设备特定选项,则会得到第四个选项:retina 4 2x。但它将设置与1x、2x和3x相同的图像。我没有在iPhone 6上进行测试,因为我没有那个设备,但您可以通过在1x、2x、retina 4 2x和3x中放置不同的图像来在设备上进行测试。当我在模拟器中进行测试时,除了在iPhone6上显示2x图像而不是retina 4 2x之外,它给了我正确的图像。 - Dhaivat Vyas
1
@Ali 其原因是当我们选择特定设备时,我们无法获得iPhone 6和6 Plus的选项。因此,它将根据设备特定的尺寸设置图像,将1x图像放置在非Retina设备上,将2x图像放置在4s和6上,将Retina 4的2x图像放置在5、5c、5s上,并将3x图像放置在6 Plus上。如果您想要设置,请使用尺寸为640x1136的2x图像,它将正常工作。如果有任何疑问,请告诉我。 - Dhaivat Vyas
1
感谢您的回复,但是我的问题是我想让iPhone 5/5s使用Retina 4的图像,但它总是选择2x的。这个问题在这个链接中得到了解决:http://stackoverflow.com/questions/29374340/retina-4-2x-is-never-used-for-iphone-5-simulator-in-xcode-6-2-image-asset/29501788#29501788 - Ali
1
@Ali 谢谢,我也学到了有关使用xcassets进行部署目标的新知识,以适应4 2x图像。 - Dhaivat Vyas
3
@iOS_DK,更正:Retina 4 2x的图像将会被放大到分辨率为750 x 1334。这仅在iPhone 6显示缩放时发生。在没有缩放的情况下,iPhone 6使用2倍大小的图像将其渲染到750 x 1334像素。 - Fatih Aksu
显示剩余4条评论

9
如果您的启动图像在xcasset文件中,您可以在Xcode 6中执行以下操作。
选择启动图像资源,选择特定分辨率(1x、2x、Retina 4等),并打开属性检查器(见下图)。
在“图像”部分下,您将有一个“期望大小”属性。
在下面的图片中,您可以看到这个属性。

6
在images.xcassets中,您可以通过右键单击(如快照所示)添加不同的设备支持。

enter image description here

编辑:好吧,当我将图像拖放到占位符时,它似乎无法工作。如下所示,它会变得混乱。

enter image description here

我不知道为什么它在我的Xcode 6.4上表现奇怪。
编辑#2:
我在这里看到了一个苹果的bug。如您在上面的第一张图片中所见,我可以通过右键选择“Universal”以及任何设备。但是通过属性检查器,我可以正确地选择“Universal”或特定设备,如此处所示。

enter image description here

编辑#3:

Xcode 7中,属性检查器已经改变,现在它提供了与右键单击相同的选项。因此,现在它不再只提供“通用”或特定设备的选择,而是提供了选择全部的选项。

enter image description here


在Xcode 7中,有点更加令人困惑,因为你可以选择通用、iPad和iPhone。有什么建议吗? - Jules
您可以选择所需设备,然后将正确大小的图像拖放到相应的图像占位符中。 - zeeawan
如何为3.5寸显示屏添加特定图片? - hash3r

4

有一个工具:AVXCassets Generator,您只需点击一下就可以直接生成所有图标和图片的XCAssets文件。

希望您会喜欢它。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接