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


141

我看过很少的文章和讨论,像这里这里的那样,关于新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中有所不同。

在此线程中查看有关此的更多信息

因此,iPhone 6使用与iPhone 4、5和5S相同的@ 2x图像,因为它具有相同的PPI,而iPhone 6则使用@ 3x。


那么,如果没有设备使用Retina 4 2x,该怎么用?
Mrunal

1
我同意4、5和6 iPhone的密度相同,但是如何解决不同的分辨率问题?因此,相差640x960和750×1334像素。如果我需要使用覆盖整个屏幕的背景图像。在这种情况下,如何设置图像xcasset?
Matrosov Alexander

@MatrosovAlexander您如何解决的?
马里奥·卡瓦略

作为解决方法,我也将iphone 6图像用于@ 2x图像,但是xcode没有适合它的图像实在是不足为奇
Matrosov Alexander

Answers:


54

我已经在一个示例项目中尝试使用标准@ 2x和@ 3x图像,而iPhone 6+模拟器使用@ 3x图像。因此,似乎要完成@ 3x图像(如果模拟器实际上复制了设备的行为)。但是奇怪的是,在项目结构中,所有设备(模拟器)似乎都使用此@ 3x图像,iPhone 4S / iPhone 5也是如此。
苹果公司缺乏对潜在的@ 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中的模拟器。


2
是的,我使用模拟器进行了测试,所有设备都拍摄@ 3x图像,的确令人困惑
Bhumit Mehta 2014年

所以在最后,今天的最佳路径是在图像的名称使用“@ 2X”,但不知何故设备检查6 Plus和使用3倍的图像没有“@ 3倍”,以免毒害2X设备?
darkheartfelt

看来,只有在所讨论的资产是JPG而不是PNG的情况下,iPhone 6才会选择3x。
emreberge 2015年

102

更新:

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

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

在此处输入图片说明


是的,这是对的,这是Apple提供的有关图标或图像尺寸的官方文档

在此处输入图片说明

您必须为iPhone6和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

有关图像及其分辨率的更多信息,这是有史以来最有用的文章

要为控件设置图像大小,可以设置1x @ 2x和@ 3x,如下所示:

在此处输入图片说明


8
如果所有设备都是2倍或3倍视网膜,为什么资产目录要求仅在iOS 7/8上将iPhone定位为项目的1倍图像?没有道理。
鸭子

1
可能就是iphone4 @RubberDuck的问题:)看到需要1x的ipad 2和iPad Mini
Nitin Gohel 2014年

对不起,但您没有阅读我写的内容。我说的是iOS 7专用的iPhone项目。没有1x的iPhone可以运行iOS 7,但是资产目录仍然要求它。
鸭子

@RubberDuck选择您的图像资产,然后查看Xcode右侧的实用程序窗格。选项卡中的一个具有一组复选框。也许您的资产选择了太多复选框,导致1x选项出现。
rmaddy14 2014年


10

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

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

在此处输入图片说明

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

如果通过调用并分配到图像视图并使用图像名称(例如,one.pngone@2x.pngone@3x.png)从应用程序包中绘制图像,则情况也是如此imageNamed:

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


1
您已将资产标记为“通用”,因此为什么看到一致的行为。尝试在下拉菜单中选择“特定于设备”!
Nikolay Spassov 2014年

1
@RalphZhouYuan现在对我来说很好。您不会看到列出的2x版本,只需分配1x版本,即可正确使用2x或3x版本。或者,仅使用资产目录。
马特2014年

1
@RalphZhouYuan这是我的可下载示例:github.com/mattneub/Programming-iOS-Book-Examples/tree/master/…-它同时显示应用程序包中的图像文件和资产目录中的图像文件,并且它们都可以正常工作。
2014年

3
@matt我终于发现我的问题与我的应用程序的部署目标设置(即6.0)有关。我提出了一个问题:stackoverflow.com/questions/26333278/… 并向Apple发送了错误报告。
inexcii 2014年

1
@RalphZhouYuan哇,伟大的侦探工作一直在追踪!感谢您的回复。
马特2014年

2

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

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

如果您将ios7和ios8设备作为目标并希望获得最佳质量,则手机和普通iPad都需要@ 2x和@ 3x,ipad资产则需要@ 2x,因为没有剩余的非视网膜手机,也没有@ 3x ipad。

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


只需用神奇的PaintCode为载体的应用
Fattie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.