Xcode 6 - 通用图像支持的 xcassets

Posted

技术标签:

【中文标题】Xcode 6 - 通用图像支持的 xcassets【英文标题】:Xcode 6 - xcassets for universal image support 【发布时间】:2014-11-19 04:30:01 【问题描述】:

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

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

iPad 不可回收, iPad视网膜

我对 iPhone 部分感到困惑。对于 iPhone 的 4 种不同屏幕分辨率,我的背景精灵已经有 4 个版本。但是哪个去哪个?

我知道 3x 用于 6+,我认为 5/c/s 用于 Retina 4 2x,但我不知道 iPhone4/s 和 6 去哪里。有人知道吗?

旁注,当我在我的 xcassets 文件中创建启动图像时,我会看到这些选项,这些选项基本上包含我支持的所有设备。只是想知道为什么创建图像集时不是这种情况

另外,你们如何为通用应用程序创建图像/精灵?现在新的 iPhone 6 和 6 plus 都出来了,我还有 2 个分辨率需要支持,这仍然让我感到困惑,因为我还是个初学者。

【问题讨论】:

查看此链接developer.apple.com/library/ios/documentation/UserExperience/… 请注意,您可以简单地使用通用图像,您已选择特定设备,这就是所有这些版本的原因:) Adobe Generator 是一个很好的吐槽方式。来自单个 PSD 的 1x、2x、3x 资产。在新的 CC 2014 中,您可以使用默认设置创建图层。假设您有一个带有视网膜 (2x) gfx 的 PSD,如果您将图层命名为 default ios/@2x + 50% ios/ + 150% ios/@3x,然后是您的资产图层,即。 icon.png 它会吐出 3 个图标,分别放大和缩小以适应 1x 和 3x。 有人知道为什么 iPhone 6 使用 2x 而不是 Retina 4 2x 像 iPhone 5S 吗? xCode 上不再存在这些选项。现在它只有 1x、2x、3x 选项。 【参考方案1】:

这有点令人困惑 - 这是我的理解(这是参考顶部图片):

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 英寸超视网膜 [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] 用于我希望在设备上为 10x10 的图像),然后将其保存为 png 并将副本大小调整为 20x20 [@2x] 和 10x10 [标准]。 更好的 解决方案是创建和使用vector graphics,它可以更好地调整到任何大小。

【讨论】:

感谢您的回答。您的回答肯定会有所启发,尤其是对于像我这样的初学者而言。我确实想指出一些事情。参考我发布的顶部图像,我尝试为 iPhone(2x、Retina 4 2x 和 3x)的每个条目添加不同的精灵,以查看它为每个设备获取的精灵。似乎 iPhone 6 和 iPhone 4 从 2x 字段中获取图像。他们共享同一个领域。这是否意味着我将不得不将我的 iPhone 6 精灵(实际上是背景图像)放在 2x 字段上?还是 iPhone 4 版本? iPhone 6 使用 2x,而不是 Retina 4 2x。我测试过 :) 如果你取消选中 Retina 4 inch specialization,iPhone 5,5s,5c 将使用 2x,就像 4s 和 6。 任何人都知道为什么 iPhone 6 使用 2x 而不是像 iPhone 5S 那样使用 Retina 4 2x 吗? @MaRco85 这就是 Apple 所说的,查看这里developer.apple.com/library/ios/documentation/UserExperience/… @MaRco85 : 在这里查看投票最高的答案:***.com/questions/25969533/… 希望这会对你有所帮助【参考方案2】:

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

Retina 4 2x 的图像将放大到 750 x 1334 分辨率。 图像 3 倍将缩小到分辨率 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

希望这会更有帮助。

【讨论】:

@Ali 抱歉回复晚了。如您所知,在 xcode6 中,如果我们需要根据特定设备设置图像,我们有 4 个选项。 xcode 默认设置 1x、2x 和 3x 图像。如果我们选择特定于 iPhone 的设备,我们将获得视网膜 4 2x 的第四个选项。但它会设置 1x、2x 和 3x 中设置的图像。我没有在 iPhone 6 中进行测试,因为我没有该设备,但您可以通过在 1x、2x、retina 4 2x 和 3x 中放置不同的图像在设备中进行测试。当我在模拟器中测试时,它给了我正确的图像,除了在 iPhone6 中它显示 2x 图像 insted 视网膜 4 2x。 @Ali 背后的原因是当我们选择特定设备时,我们没有选择 iPhone 6 和 6 plus。因此它将根据设备特定尺寸设置图像,它将在非视网膜设备中放置 1x 图像,在 4s 和 6 中放置 2x 图像,在 5、5c、5s 中放置视网膜 4 2x,在 6 Plus 中放置 3x 图像。如果你想这样设置,那么在大小为 640x1136 的 2x 设置图像中它可以正常工作。如有任何疑问,请告诉我。 感谢您的重播,但我的问题是我希望 iPhone 5/5s 使用 Retina 4 图像,但它总是选择 2x。这个问题解决了***.com/questions/29374340/… @Ali 谢谢我还学到了关于部署目标的新知识,用 xcassets 来重新处理 4 2x 图像。 @iOS_DK ,更正:“Retina 4 2x 的图像将放大到分辨率 750 x 1334”。这仅发生在 iPhone 6 显示缩放中。没有缩放 iPhone 6 使用 2x 图像将其渲染为 750 x 1334 像素。【参考方案3】:

如果您的启动图像在 xcasset 文件中,您可以在 Xcode 6 中执行以下操作。

选择启动图像资源,选择特定分辨率(1x、2x、Retina 4 等)并打开属性检查器(见下图)。

在“图像”部分下,您将有一个“预期大小”属性。

【讨论】:

【参考方案4】:

在 images.xcassets 中,您可以通过右键单击添加不同的设备支持,如 snap 所示

编辑:好吧,当我将 n 个拖放图像拖放到占位符时,它似乎不起作用。如下图所示,它变得一团糟

我不知道为什么它在我的 Xcode 6.4 上表现得很奇怪。

编辑#2:

我在这里看到了一个来自苹果的错误。正如您在上面的第一张图片中看到的那样,我可以在右键单击时选择“通用”以及任何设备。但是通过属性检查器,我可以正确选择“通用”或特定设备,如下所示

编辑#3:

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

【讨论】:

在 Xcode 7 中有点混乱,因为你可以选择 Universal、ipad 和 iphone。有什么建议吗? 您可以选择所需的设备并将正确尺寸的图像拖放到相关的图像占位符中。 3.5显示如何添加特定图片?【参考方案5】:

有一个工具:AVXCassets Generator,您可以通过它一键直接为您的所有图标和图像生成 XCAssets 文件。

希望你会喜欢。

【讨论】:

以上是关于Xcode 6 - 通用图像支持的 xcassets的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 6 beta 中使用 Images.xcassets

从 Xcode Swift 中 Assets.xcassets 中的文件夹访问图像

Assets.xcassets - 通用不工作

如何在 Xcode 5 中使用不同的图像 iOS 6 和 iOS 7 [关闭]

iOS 7 / Xcode 5:以编程方式访问设备启动图像

如何告诉资产目录 (.xcassets) 对多个图像井使用相同的图像?