Ios 有没有一个很好的理由不让所有的iPhone/iPad图形都只有视网膜尺寸?

Ios 有没有一个很好的理由不让所有的iPhone/iPad图形都只有视网膜尺寸?,ios,graphics,retina-display,Ios,Graphics,Retina Display,我理解如果应用程序最初设计为非视网膜图形,则需要将非视网膜图形升级为视网膜图形。如果您不转换旧的应用程序,是否有理由制作两个不同大小的图形?既然视网膜图形可以缩小,但非视网膜图形不能放大,为什么不让所有图形都具有视网膜尺寸?这似乎节省了很多时间(使每个图形的大小为2/适当地命名每个图形,等等),尽管它可能会占用很少的空间。如果我不把我所有的iPad和iPhone应用程序都仅仅基于视网膜尺寸,我会忽略什么吗 主要原因只是性能问题,如果系统必须缩小所有图像的比例,可能会影响性能 另外,如果只有@2x

我理解如果应用程序最初设计为非视网膜图形,则需要将非视网膜图形升级为视网膜图形。如果您不转换旧的应用程序,是否有理由制作两个不同大小的图形?既然视网膜图形可以缩小,但非视网膜图形不能放大,为什么不让所有图形都具有视网膜尺寸?这似乎节省了很多时间(使每个图形的大小为2/适当地命名每个图形,等等),尽管它可能会占用很少的空间。如果我不把我所有的iPad和iPhone应用程序都仅仅基于视网膜尺寸,我会忽略什么吗

主要原因只是性能问题,如果系统必须缩小所有图像的比例,可能会影响性能


另外,如果只有@2x图像可用,我不确定非视网膜系统是否会加载图像。这需要在模拟器中进行一些测试。

仅包括视网膜图形的问题在于,正如您所说,设备在显示之前必须缩小您的所有资产。这可能对你的应用程序的性能影响微乎其微。更大的问题是缩小的图形看起来很糟糕,特别是因为它们将显示在低分辨率的屏幕上。所有缩放后的图像充其量只能看起来平庸。也许你可以花很多时间开发iOS能够很好扩展的图像,但在这一点上,为什么不生成单独的图像文件呢?生成1x资产不需要太多努力,您的用户会注意到差异。

正如Kendall回答的,一个原因是性能,另一个原因是视觉质量。

设计用于视网膜的图像,当自动缩小时会变得不锐化:
对于像素清晰的图像,必须针对非视网膜进行设计:

这包括不将线条放置在分数坐标上,它们将在到像素之间,导致视觉质量降低。

为应用程序创建图像时,最好在导出之前降低分辨率。与创建.png文件然后调整其大小相比,图像的渲染效果更好

想象一个8px*8px的正方形被缩小到4px*4px

如果缩小png文件,则2px*2px正方形将对应于单个像素。产生的颜色不会是完美的。如果在导出图像之前缩小图像,它将渲染得更好

因此,如果您自己创建这些图像,最好在导出它们之前手动缩小它们


如果你使用“已经平坦”的图像,无论你还是操作系统操作这种“糟糕”的缩小比例,你都会得到相同的结果。但是,如果您给系统提供非视网膜图像,您的应用程序将运行得更平稳,因为您可以腾出操作系统创建低分辨率图像的时间。

性能是一个因素。此外,对于小图标,您需要屏幕大小的像素完美图像。iOS上的缩放算法通常是平滑的,但当你进入小图标时,你希望它更清晰

您还可以考虑在构建过程中自动创建1x图像,这样您就不必维护每个资产的两个副本。我的应用程序中可能只包含针对iPhone5特定更新的@2X图像,并且发现iPhone5不显示该图像。我必须包括非2X图像,这解决了问题。iPhone5模拟器显示的图像很好,但不是真实的设备,所以请记住这一点。100px x 100px的图像明显比50px x 50px的图像清晰得多。如果将100 x 100缩放为50 x 50,则会降低其锐度。看起来原来的50 x 50与缩放后的图像会有细微的差别。。不是的,缩放后的图像看起来“差劲且平庸”,但非视网膜图形已经是“差劲且平庸”。通过算法(即使是好的算法)缩小的图像和经过人类设计师缩小的图像之间肯定存在着不平凡的差异。使用前者节省少量时间会引起用户的注意。当然,非视网膜显示器有点差劲,但如果在设计阶段忽视非视网膜用户,你会对他们不屑一顾。这是解释为什么iOS不能很好地进行下采样的唯一答案。你通常会期望苹果能正确地完成一个图像处理算法。然而,这是因为它使用与上采样相同的算法。而且,这个问题只对小图标可见。大图片通常可以正确缩放,因为缩放算法更适合图片。您知道iOS使用什么算法来减少图像采样吗?为什么它不智能地使用更合适的算法来获得更清晰的图片呢?(我可以将此作为一个单独的问题发布)主要原因是我在下面的回答中描述的下采样问题。下采样算法经过了充分优化,因此降低应用速度的风险很小。例如,UIImageView使用缩放算法,可以在不影响性能的情况下将其放置在数千行中。此外,iOS默认加载视网膜图像并在非视网膜不可用时进行缩放。