0

我正在为我的一个应用程序发布一个新的更新,我很失望地看到它刚刚超过 20MB 的估计大小(20MB 是不能再通过单元数据下载它的点)。

我的应用程序包含很多图像,所以如果我没有所有这些非视网膜图像,我可以大大减小尺寸。我知道有一些非视网膜设备将运行我的应用程序。所以这是我的问题:

  • 如果我有一个带有@2x 后缀但没有非视网膜图像的图像,非视网膜设备将如何反应。

  • 如果我使用不带@2x 后缀的 Retina 大小的图像并将其缩小到我想以编程方式和/或通过界面生成器显示的大小,它是否仍能在 Retina 设备上保持完整的质量?非视网膜设备上的质量会比使用我使用 GIMP 从原始图像缩小的图像更差吗?

4

3 回答 3

0

好的。

如果您只提供一张图片,那么您有两种可能性之一。

  1. 该图像是非视网膜图像。这在非视网膜上看起来很好。它在视网膜设备上看起来是一样的。但在视网膜图像旁边看起来质量很低。

  2. 该图像是视网膜图像。在视网膜设备上,它仍将作为视网膜图像加载。它看起来会很好。但是,在非视网膜设备上,它必须按比例缩小图像。这需要额外的 CPU 周期,因此可能会影响性能,并且看起来可能不像您想要的那样。它可能会使用与您想要的不同的方法来缩小图像,因此可能会使图像看起来很奇怪。

无论有没有后缀,这都是一样的。

最好的解决方案是创建视网膜图像,然后使用您选择的编辑器创建标准版本。没有什么能阻止您只提供一个图像,但它可能会导致您不想要的外观和性能。

在旁注中。通过蜂窝数据下载的大小增加到 50MB。

于 2013-10-14T08:24:37.767 回答
0

使用模拟器尝试这些事情并自己找出答案。

我认为答案是 UIImage 将忽略 @2x 选择,如果你依赖[UIImage imageNamed:@"without2xSuffix.png"]并且没有找到任何东西,但我还没有尝试过。故意请求@2x 文件会起作用,但图像是否会被缩放、平铺、拉伸或居中(或其他)取决于它的使用位置。

请注意,文档说除非您使用不带 @2x 后缀的名称并让 iOS 为您找到 2x 版本,否则它会将图像的比例设置为 1.0 而不是 2.0,这会使绘图复杂化。您必须使用加载图像imageWithData:scale:来解决此问题。

于 2013-10-14T08:25:02.713 回答
0

如果我有一个带有@2x 后缀的图像但没有非视网膜 i 图像而没有它,非视网膜设备将如何反应。

我在我的几个应用程序上使用了这种方法,它完美无缺。我无法在非视网膜显示设备(具体来说,iPad 1/2 和 mini)上检测到任何性能或视觉问题。

我不确定在较旧的 iOS 版本上会发生什么,因为我只在这些应用程序上支持 iOS5+。

如果我使用不带@2x 后缀的 Retina 大小的图像并将其缩小到我想以编程方式和/或通过界面生成器显示的大小,它是否仍能在 Retina 设备上保持完整的质量?非视网膜设备上的质量会比使用我使用 GIMP 从原始图像缩小的图像更差吗?

这取决于您在进行缩放时如何设置插值选项。有关插值质量如何影响缩小图像的更多详细信息,请参阅this other question。在 GIMP 或 Photoshop 中,您还可以控制用于缩放的插值,顺便说一句。

但最后我认为你不需要走这条路。

最重要的是,带宽限制已提高到 50MB

于 2013-10-14T08:57:36.163 回答