新 iPhone 6 和 6+ 的图像分辨率,是不是添加了 @3x 支持?
Posted
技术标签:
【中文标题】新 iPhone 6 和 6+ 的图像分辨率,是不是添加了 @3x 支持?【英文标题】:Image resolution for new iPhone 6 and 6+, @3x support added?新 iPhone 6 和 6+ 的图像分辨率,是否添加了 @3x 支持? 【发布时间】:2014-11-05 01:07:40 【问题描述】:我看过一些文章和讨论,例如 one here 和 Here,关于新 iPhone 将使用 @3x 图像进行显示的图像分辨率。这是真的吗?
这是否意味着我们必须保留三张图片?比如说我有一张 50 X 50 的图片,我需要保留 3 张图片来优化新 iPhone 的外观吗?
正常 (50 X 50) @2x - 视网膜 (100 X 100) @3x - 视网膜高清 (150 X 150)或者新手机会只使用@2x 图像而没有像@3x 这样的东西吗?
我通过制作示例项目进行了测试,所有模拟器似乎都使用@3x 图像,这令人困惑。
编辑
这里有更多信息
3GS(163 ppi 所以使用普通) 4、4s、5 和 5s(326 ppi,所以我们使用 @2x) 6 (326 ppi 所以看起来它会使用@2x) 6 加(这里是 401 ppi)编辑
根据 Tsob 和 nitin 给出的答案,我在我的项目中添加了 @3x 图像。
信息编辑
我看到很少有用户对为什么 iPhone 6 使用 @2x 图像即使它具有更高的分辨率感到困惑,原因是
iPhone 6 可能具有不同的分辨率,但具有相同的每像素英寸密度 (PPI)
分辨率涉及像素的绝对数量。 密度(又名每英寸像素 - PPI)涉及每英寸像素的相对数量,这在 iPhone 6 和之前的 iPhone 中是相同的,但在 iPhone 6 plus 中有所不同。查看更多关于此here in this thread
因此 iPhone 6 使用与 iPhone 4、5 和 5S 相同的@2x 图像,因为它具有相同的 PPI,而 iPhone 6 plus 使用@3x。
【问题讨论】:
那么Retina 4 2x有什么用,如果没有设备使用呢? 我同意 4、5 和 6 iPhone 的密度相同,但如何解决不同分辨率的问题?所以 640x960 和 750 × 1334 像素差别很大。如果我需要使用覆盖整个屏幕的背景图像。在这种情况下如何设置图像 xcasset? @MatrosovAlexander 你是怎么解决的? 作为解决方法,我也将 iphone 6 图像用于@2x 图像,但令人惊讶的是 xcode 没有合适的图像 关注“***.com/questions/48483934/…” 【参考方案1】:更新:
苹果的图标图像大小的新链接。
https://developer.apple.com/ios/human-interface-guidelines/graphics/image-size-and-resolution/
是的,这是真的,这是 Apple 提供有关 icon's or image size 的官方文档
你必须设置images for iPhone6 and iPhone6+
对于 iPhone 6:
750 x 1334 (@2x) for portrait
1334 x 750 (@2x) for landscape
对于 iPhone 6 Plus:
1242 x 2208 (@3x) for portrait
2208 x 1242 (@3x) for landscape
For more info regarding Images and it's resolution this is best ever helpful post
要为控件设置图像大小,您可以设置 1x @2x 和 @3x,如下所示:
【讨论】:
如果所有设备都是视网膜 2x 或 3x,为什么资产目录要求在 iOS 7/8 上仅针对 iPhone 的项目提供 1x 图像?没有意义。 可能是 iphone4 @RubberDuck :) 看到需要 1x 的 ipad 2 和 iPad Mini 抱歉,您没有阅读我写的内容。我说的是仅适用于 iOS 7 的 iPhone 项目。没有 1x 的 iphone 可以运行 iOS 7,但资产目录仍然要求它。 @RubberDuck 选择您的图像资产,然后查看 Xcode 右侧的实用程序窗格。其中一个选项卡有一组复选框。也许您的资产选择了太多复选框,导致 1x 显示为一个选项。 developer.apple.com/ios/human-interface-guidelines/graphics/…新链接【参考方案2】:我在一个示例项目中尝试使用标准、@2x 和@3x 图像,而iPhone 6+ 模拟器使用@3x 图像。因此,似乎需要完成@3x 图像(如果模拟器实际上复制了设备的行为)。 但奇怪的是,所有设备(模拟器)在项目结构中似乎都使用这个@3x 图像,iPhone 4S/iPhone 5 也是。 Apple 在潜在的@3x 结构上缺乏沟通,而他们要求开发人员发布他们的 iOS8 应用程序非常令人困惑,尤其是在模拟器上看到这些结果时。
**从 Apple 网站编辑 **:也可以在 Apple 开发人员空间的“iOS 8 上的新功能”部分找到此内容:
支持新的屏幕比例 iPhone 6 Plus 采用了全新的 Retina HD 显示屏,屏幕比例为 3.0。为了在这些设备上提供最佳体验,请添加为此屏幕比例设计的新艺术作品。在 Xcode 6 中,资产目录可以包含 1x、2x 和 3x 大小的图像;只需添加新的图像资源,iOS 将在 iPhone 6 Plus 上运行时选择正确的资源。 iOS 中的图像加载行为也可以识别 @3x 后缀。
仍然不明白为什么所有设备似乎都加载了@3x。也许是因为我使用的是常规文件而不是 xcassets ?将很快尝试。
在进一步测试后编辑: 好的,iOS8 似乎在这方面有发言权。在 iOS 7.1 iPhone 5 模拟器上进行测试时,它正确使用了 @2x 图像。但是当在 iOS 8 上启动它时,它在 iPhone 5 上使用@3x。 不过,不确定这是否是 iOS8 GM 或 Xcode 6 模拟器中的通缉行为或错误/错误。
【讨论】:
是的,我用模拟器测试过,所有设备都拍摄@3x 图像,确实令人困惑 总之,截至今天最好的路径是在图像名称中使用“@2x”,但以某种方式检查 6 Plus 并使用 3x 图像而不“@3x”以免毒害 2x 设备? 似乎 iPhone 6 上的 3x 选择仅在相关资产是 JPG 而不是 PNG 时才会发生。【参考方案3】:我通过制作一个示例项目进行了测试,所有模拟器似乎都使用@3x 图像,这令人困惑。
在您的资产目录中创建不同版本的图像,以便图像本身告诉您它是什么版本:
现在依次在每个模拟器上运行应用程序。您会看到 3x 图像仅在 iPhone 6 Plus 上使用。
如果图像是从应用程序包中使用它们的名称(例如 one.png、one@2x.png 和 one@3x.png) 通过调用imageNamed:
并分配给图像视图。
(但是,如果您将图像分配给 Interface Builder 中的图像视图,则会有所不同 - 在双分辨率设备上会忽略 2x 版本。这可能是一个错误,显然是 pathForResource:ofType:
中的一个错误。)
【讨论】:
您已将资产标记为“通用”,因此您会看到一致的行为。请尝试在下拉菜单中选择“特定于设备”! @RalphZhouYuan 现在对我来说效果很好。您不会看到 列出 的 2x 版本,而只需指定 1x 版本,2x 或 3x 版本将被正确使用。或者,只需使用资产目录。 @RalphZhouYuan 这是我的可下载示例:github.com/mattneub/Programming-iOS-Book-Examples/tree/master/… - 它显示使用应用程序包中的图像文件和资产目录中的图像文件,它们都可以正常工作。 @matt 我终于发现我的问题与我的应用程序的 deployment target 设置(即 6.0)有关。我打开了一个问题:***.com/questions/26333278/… 并解雇了向 Apple 报告错误。 @RalphZhouYuan 哇,伟大的侦探工作正在追踪它!感谢您的反馈。【参考方案4】:ios 将始终尝试获取最佳图像,但会回退到其他选项.. 因此,如果您的应用中只有普通图像并且它需要 @2x 图像,它将使用普通图像。
如果您只将@2x 放入项目中并在普通设备上打开应用程序,它将缩小图像以显示。
如果您以 ios7 和 ios8 设备为目标并希望获得最佳质量,您将需要 @2x 和 @3x 用于手机和普通,@2x 用于 ipad 资产,因为没有非视网膜手机,也没有 @3x ipad。
也许最好在应用程序中从矢量图形创建资产...检查http://mattgemmell.com/using-pdf-images-in-ios-apps/
【讨论】:
只需将惊人的 PaintCode 用于应用程序中的矢量以上是关于新 iPhone 6 和 6+ 的图像分辨率,是不是添加了 @3x 支持?的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone 6 和 6 plus 中设置背景图像和图标图像