对于仅限iPhone的iOS 7+应用程序,我们是否只能包含@ 3x图像?

时间:2014-09-29 03:20:03

标签: ios iphone uiimage ios8 resolution

为了减少捆绑尺寸,是否可以(并且一个好主意)只添加@ 3x图像?

为了澄清,我不是指应用程序图标,启动图像等。但是应用程序内部的图像,如UIButton背景图像。

我看到了Image resolution for new iPhone 6 and 6+, @3x support added?,但它没有回答我的问题。

3 个答案:

答案 0 :(得分:29)

是的,你可以,但你不应该。

如果您只添加@ 3x图像,它将减少您的光盘尺寸并与所有屏幕密度兼容。

但是,我不建议这样做。仅嵌入@ 3x图像将导致每次运行应用程序时缩小图像。这种方法有以下缺点:

  • 您无法控制iOS使用的图像缩放模式。某些图像在自动缩放后可能会出现明显的像素化和/或瑕疵。
  • 缩放图片可能会降低应用性能。在旧设备上尤其如此,这些设备将进行大量扩展。仅使用@ 3x图像将增加这些缩放操作的处理时间,甚至比从@ 2x缩小更多。
  • 您将无法像素完美地导出资产。许多设计师花时间手动缩放其图像资源,以确保不会破坏精细的笔触和纹理。这样可以获得所有设备类型的最佳体验。

如果你关心你的应用程序在大多数设备上看起来清晰明快,我强烈建议你至少导出你的图像@ 2x和@ 3x屏幕密度。根据项目的兼容性需求,我有时会选择不导出@ 1x。

如果您的目标只是运行iOS 7+的iPhone,那么您绝对不需要导出@ 1x。所有@ 1x iPhone设备都不支持iOS 7+。您需要担心的唯一@ 1x设备是iPad 2和iPad mini(非视网膜)。

另一个注意事项:在研究你的问题时,我听到有传闻说苹果可能拒绝你的应用程序,因为每个密度都没有图像。我从来没有经历过这个。我在开发人员指南中唯一能找到的就是这条规则。

2.10 iPhone应用程序也必须在iPad上运行,无需修改,iPhone分辨率和2X iPhone 3GS分辨率

对我而言,这似乎暗示只要它有效,你就是好人。但来吧,男人,让它美丽!

答案 1 :(得分:2)

在我的测试中,我发现iOS 7及以下版本无法识别@ 3x。所以如果你打算支持iOS 7& 8,你肯定想要包含@ 2x图像。

至于所述图像的分辨率,我还没有找到满意的答案。对于我正在研究的应用程序,以全屏jpg(可能是照片)为例,我将以12xx2208保存@ 3x和750x1334保存@ 2x以匹配这些图像将在iPhone上显示的最高分辨率。这不是一个像素完美的解决方案,因为图像需要在非iPhone 6(+)上按比例缩小,但我认为这是一个很好的中间地带,如果语句规定基于哪个图像,则不会涉及太多的额外工作。屏幕尺寸(ugh)和5个不同的图像。

有关dfmuir提出的性能问题需要注意的一点是,这些图像最终会在很多情况下缩小,即显示缩放模式下的4 / 4S,5 / 5S,6/6 +,即使你可以选择苹果首选的方法,在@ 1x,@ 2x和@ 3x中包含3张图像,因为我们现在有5种(或6种包含3g)不同的分辨率(有关详细信息,请参阅此图表中的渲染像素行:{{3 }})

如果您将图像设计为与点相关(因此保持相同的大小,相对于说您的图像),那么您不会因照片般的图像(因此不考虑UI元素)而遇到这些问题的唯一方法拇指而不是相对于手机的屏幕尺寸),但这并不总是对应用程序的设计有意义。一个例子是在较低分辨率的手机上裁剪而不是按比例缩小。

答案 2 :(得分:0)

有一点需要注意的是,@ 3x已经被设备缩小了尺寸。 3是UIDevice规模,而屏幕实际上在某种意义上是nativeScale。因此,如果论证成立,它应该为@ 3x做其他密度的正确工作。

当然,如果图像有相当多的尖角,只有一个像素位于角落,人们可能想要精确定位它而不是让操作系统通过应用它将要应用的任何连续过滤器来选择它缩减。