对于仅iPhone,iOS 7+应用程序,我们可以只包含@ 3x图像吗?

为了减less包的大小,是否有可能(和一个好主意)只添加@ 3x图像?

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

我看到新的iPhone 6和6+的图像分辨率,@ 3x支持添加? ,但是没有回答我的问题。

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

如果您只添加@ 3x图像,它将减less您的包的大小,并与所有屏幕密度兼容。

不过,我不build议这样做。 每次运行应用程序时,只embedded@ 3张图像会导致图像缩小。 这种方法有以下缺点:

  • 您无法控制iOS使用的图像缩放模式。 某些图像自动缩放后可能会看到明显的像素化和/或伪像。
  • 缩放图像可能会降低应用性能。 在旧设备上尤其如此,这将会大量缩放。 仅使用@ 3x图像将比从@ 2x缩小更多地增加这些缩放操作的处理时间。
  • 你将没有机会像素完美的出口资产。 许多devise师都花时间手动缩放图像资源,以确保细笔画和纹理不会中断。 这导致了所有设备types的最佳体验。

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

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

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

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

对我来说,这似乎意味着只要它有效,你就是好的。 但是来吧,让它变得美丽!

在我的testing中,我发现@ 3x在iOS 7及以下版本中不被识别。 因此,如果您计划支持iOS 7和8,则一定要包含@ 2x图像。

至于图片的parsing,我还没有find满意的答案。 对于我正在使用的应用程序,以全屏JPG(可能是照片)为例,我将在1242×2208处保存为@ 3x,在750×1334处保存为@ 2x,以匹配这些图像将在iPhone上显示的最高分辨率。 这不是一个像素完美的解决scheme,因为图像将需要在非iPhone 6(+)上缩小,但我认为这是一个很好的中间地带,不涉及太多额外的工作,如果声明指示哪个图像基于屏幕大小(唉)和5个不同的图像。

dfmuir提到的一个关于性能问题的事情是,在显示缩放模式下,这些图像将在很多情况下缩小,即4 / 4S,5 / 5S,6/6 +因为我们现在有5个(或6个,包括3gs)不同的分辨率,所以苹果公司的首选方法是在@ 1x,@ 2x和@ 3x处包含3个图像(参见图表中的渲染像素行以获取更多信息: http:// www。 paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions )

唯一的办法是不用类似照片的图像(不考虑用户界面元素)来解决这些问题,就是如果你devise的图像是与点相关的(相对于说你的拇指而言,保持相同的大小)相对于手机的屏幕尺寸),但这并不总是适合应用程序的devise。 一个例子就是在较低分辨率的手机上裁剪,而不是缩小。

有一件事要注意的是,@ 3x已经被设备缩小了。 3是UIDevice规模,而屏幕实际上在某种意义上是nativeScale。 所以,如果这个论点成立,它应该从@ 3x做其他密度的工作。

当然,如果图像有很多尖angular,只有一个像素坐在angular落,人们可能希望精确定位它,而不是让操作系统通过应用任何连续的filter来应用于缩小比例。