仅针对 iPhone,iOS 7 及以上版本的应用程序,我们是否可以只包含 @3x 图像?

20
为了减小捆绑包大小,只添加@3x图片是否可行(并且是个好主意)?
澄清一下,我不是指应用程序图标、启动图像等。而是应用程序内部的图像,比如UIButton背景图像。
我看到了新iPhone 6和6+的图像分辨率,是否支持@3x?,但它没有回答我的问题。

你试过了吗?它有效吗?请确保进行干净的构建,并从设备/模拟器中删除应用,以确保不存在任何现有的1x和2x图像。 - rmaddy
3个回答

34

是的,你可以,但最好不要这么做。

如果你只添加 @3x 图片,它将减小你的束大小并与所有屏幕密度兼容。

更新: 自 iOS 9 起,苹果引入了应用程序瘦身功能,这意味着包含更多图像尺寸将不再增加您的软件包大小。应用商店会自动为每个特定设备生成一个精简二进制文件,并仅包括适当的 @3x 或 @2x 图像尺寸。

如果你需要支持旧设备,我不建议只使用 @3x 。只嵌入 @3x 图片会导致你的图片在每次运行应用程序时被缩小。这种方法有以下缺点:

  • 你无法控制 iOS 使用的图像缩放模式。某些图像在自动缩放后可能会出现明显的像素化和/或伪影。
  • 缩放图像可能会降低应用程序性能。这对于旧设备更为明显,它们将进行大量缩放。仅使用 @3x 图像将比从 @2x 缩小更加增加这些缩放操作的处理时间。
  • 你将没有机会实现完美的像素输出资产。许多设计师花费时间手动缩放他们的图像资产,以确保细微的笔画和纹理不会被破坏。这将在所有设备类型上获得最佳体验。

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

如果你只针对运行 iOS 7+ 的 iPhone,那么你肯定不需要导出 @1x 。所有 @1x iPhone 设备都不支持 iOS 7+。你唯一需要担心的 @1x 设备是 iPad 2 和 iPad mini(非 Retina 版)。

另一个注意:在调查您的问题时,我听到了苹果可能因为没有每个密度的图像而拒绝您的应用程序的传言。我从未经历过这种情况。我在开发者指南中找到的唯一规则就是这条。

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

对我来说,这似乎意味着只要能运行就可以了。但是,咦,朋友,请让它更美观!


2
在我的测试中,我发现iOS 7及以下版本不支持@3x。因此,如果您计划支持iOS 7和8,则一定要包括@2x图像。至于这些图像的分辨率,我还没有找到一个令人满意的答案。对于我正在开发的应用程序来说,以全屏jpg(可能是照片)为例,我会保存1242x2208的@3x和750x1334的@2x,以匹配iPhone上显示这些图像的最高分辨率。虽然这不是一个完美的像素解决方案,因为这些图像需要在非iPhone 6(+)上缩小,但我认为这是一个不错的折衷方案,不需要太多额外的工作,比如基于屏幕大小的if语句和5个不同的图像。值得注意的是,关于性能问题dfmuir提出的问题是,这些图像在很多情况下都会被缩小,例如4/4S、5/5S、6/6+的显示缩放模式,即使您采用苹果推荐的方法,在@1x、@2x和@3x中包含3张图片,因为我们现在有5种(或6种,包括3gs)不同的分辨率(请参见此表格中的渲染像素行,以获取更多信息:http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions)。唯一不会出现这些问题的方法(因此不考虑UI元素)是设计图像与点相关联(因此相对于您的拇指保持相同大小,而不是相对于手机屏幕大小),但这并不总是符合应用程序的设计。一个例子是在低分辨率手机上裁剪而不是缩小。

0

需要注意的一点是,@3x已经被设备缩小了。 3是UIDevice比例尺度,而屏幕实际上是在某种程度上的nativeScale。因此,如果参数有效,它应该可以为其他密度从@3x提供适当的工作。

当然,如果图像有许多仅在角落处坐落着一个单像素的锐利角落,那么人们可能希望精确地定位它,而不是让操作系统通过应用任何连续过滤器来选择它即将应用的缩小。


事实上,截至昨天,苹果只允许提交一组图像。苹果发送了一封邮件,其中写道:“...只需提交一组屏幕截图和一个可选的应用程序预览,以适应设备系列中最大的设备尺寸。”通常,在调整大小时需要注意的事项是在重新缩放之前应用模糊滤镜,例如高斯滤镜。 - de-bits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接