ChatGPT解决这个技术问题 Extra ChatGPT

新 iPhone 6 和 6+ 的图像分辨率,是否添加了 @3x 支持?

我看过一些文章和讨论,例如 one hereHere,关于新 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 没有合适的图像

i
iluvatar_GR

更新:

苹果的图标图像大小的新链接。

https://developer.apple.com/ios/human-interface-guidelines/graphics/image-size-and-resolution/

https://i.stack.imgur.com/X2PMj.png

是的,这是真的,这是 Apple 提供有关 icon's or image size 的官方文档

https://i.stack.imgur.com/6sTql.png

您必须设置 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,如下所示:

https://i.stack.imgur.com/9E2Bs.gif


如果所有设备都是视网膜 2 倍或 3 倍,为什么资产目录要求在项目中仅在 iOS 7/8 上针对 iPhone 提供 1 倍图像?没有意义。
可能是 iphone4 @RubberDuck :) 看到需要 1x 的 ipad 2 和 iPad Mini
抱歉,您没有阅读我写的内容。我说的是一个仅适用于 iOS 7 的 iPhone 项目。没有 1x 的 iphone 可以运行 iOS 7,但资产目录仍然要求它。
@RubberDuck 选择您的图像资产,然后查看 Xcode 右侧的实用程序窗格。其中一个选项卡有一组复选框。也许您的资产选择了太多复选框,导致 1x 显示为选项。
T
TSob

我在一个示例项目中尝试使用标准、@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 时才会发生。
m
matt

我通过制作一个示例项目进行了测试,所有模拟器似乎都使用 @3x images ,这令人困惑。

在您的资产目录中创建不同版本的图像,以便图像本身告诉您它是什么版本:

https://i.stack.imgur.com/BQaLP.png

现在依次在每个模拟器上运行应用程序。您会看到 3x 图像仅在 iPhone 6 Plus 上使用。

如果图像是使用它们的名称从应用程序包中绘制的(例如 one.pngone@2x.pngone@3x .png) 通过调用 imageNamed: 并分配给图像视图。

(但是,如果您将图像分配给 Interface Builder 中的图像视图,则会有所不同 - 2x 版本在双分辨率设备上被忽略。这可能是一个错误,显然是 pathForResource:ofType: 中的一个错误。)


您已将资产标记为“通用”,因此您会看到一致的行为。尝试在下拉菜单中选择“设备特定”!
@RalphZhouYuan 现在对我来说效果很好。您不会看到列出的 2x 版本,而只需分配 1x 版本,2x 或 3x 版本将被正确使用。或者,只使用资产目录。
@RalphZhouYuan 这是我的可下载示例:github.com/mattneub/Programming-iOS-Book-Examples/tree/master/… - 它显示使用应用程序包中的图像文件和资产目录中的图像文件,它们都可以正常工作。
@matt 我终于发现我的问题与我的应用程序的 部署目标 设置(即 6.0)有关。我打开了一个问题:stackoverflow.com/questions/26333278/… 并向 Apple 发送了错误报告。
@RalphZhouYuan 哇,伟大的侦探工作追踪了它!感谢您的反馈。
B
Bastian

ios 将始终尝试获取最佳图像,但会回退到其他选项.. 因此,如果您的应用程序中只有普通图像并且它需要@2x 图像,它将使用普通图像。

如果您只将@2x 放入项目中并在普通设备上打开应用程序,它将缩小图像以显示。

如果您以 ios7 和 ios8 设备为目标并希望获得最佳质量,则需要 @2x 和 @3x 用于电话和普通,@2x 用于 ipad 资产,因为没有非视网膜手机,也没有@3x ipad。

也许最好从矢量图形在应用程序中创建资产...检查 http://mattgemmell.com/using-pdf-images-in-ios-apps/


只需将惊人的 PaintCode 用于应用程序中的矢量