【问题标题】:Using Non-Retina UIImage for Retina display device为 Retina 显示设备使用 Non-Retina UIImage
【发布时间】:2014-12-12 18:41:37
【问题描述】:

当我开始开发我的游戏应用程序时,我不知道我应该创建视网膜/非视网膜@2x、@3x、@1x 图像。我刚刚在 png 文件的末尾创建了没有 @1x、@2x、@3x 的图像。因此,由于我的图像目前被称为 image.png,它被认为是我现在知道的非视网膜图像。示例是我在 png 中制作了 25x35 的图像。在 Storyboards 中,我决定调整图像大小并将其设置为 35x40,因为它在 iPhone5 上看起来比 25x35 更好。我的问题是即使是 1x,我也必须先从头开始为 @3x 重新创建 40 张图像,然后使用 Prepo 应用程序自动缩小到 @2x @1x 比例。我在 iPhone 4s/5/5s/6/6+ 模拟器和 iPad 2、Air、Retina 模拟器上测试了我的非视网膜图像,它们看起来都一样而且很棒,并且应用程序运行良好。没有模糊或问题。我也可以将我的 image.png 用于 Retina 设备吗?苹果会允许这样做吗?

【问题讨论】:

  • 就 Apple 批准而言,我认为您使用的方法没有任何问题。
  • 什么意思?苹果会允许还是不允许?或者我的应用会因为视网膜设备应用的非视网膜图像而被拒绝?
  • 没有。我不会。虽然我不能确定。我建议你遵循苹果提供的 HIG。

标签: ios xcode uiimageview retina-display


【解决方案1】:

如果这是应用内图像,而不是应用程序图标,那么可以,您可以使用任何分辨率的图像。您可以使用 UIImageView 并在其上设置 contentMode 来执行 AspectFit,确保图像在每种屏幕类型上的大小相同,并且不会被拉伸。

myImageView.contentMode = UIViewContentModeScaleAspectFit;

示例:The simplest way to resize an UIImage?

这将在将图像适合图像视图容器时保留图像的纵横比。

我会为图像本身提供所需的最高分辨率 (@3x),但名称中不包含 @3x,并让 UIImageView 将其缩小到其他两种分辨率所需的大小。
这样做会影响性能。如果它不会降低您的滚动性能,那就去吧。

所以基本上:从高分辨率图像开始并按比例缩小。不要放大低分辨率图像,因为它看起来不清晰。并保持相同的纵横比,这样它就不会拉伸。

您不会因为对应用内图片执行此操作而被拒绝。

【讨论】:

    【解决方案2】:

    如果您的所有资产都具有 @3x 后缀,那么 App Store 会识别出您的应用已针对 iPhone 6 进行了优化(连同正确大小的启动图像或 .xib / .storyboard)。为非视网膜或普通视网膜屏幕使用更大的图像会导致您的 RAM 使用量增加,并稍微增加 GPU 的负担,但对于简单的应用程序,这不是一个真正的问题。

    【讨论】:

      猜你喜欢
      • 2016-02-27
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多