【问题标题】:iOS app non-retina and retina images conceptiOS 应用非视网膜和视网膜图像概念
【发布时间】:2013-07-19 04:45:55
【问题描述】:

我问这个问题只是为了提供信息并澄清我对iOS 应用程序(Retina 和non-retina 设备)中图像的概念。

我目前做的是

当我开发一个iPhone 应用程序并且我必须在UIButton 上使用Interface builder 显示图像时,我拍摄了两张图像,假设submit.png 按钮图像具有以下尺寸

  1. 100x100 像素 (submit.png)
  2. 200x200 px (submit@2x.png) 用于视网膜显示

在Interface builder 中,我将UIButton 的大小设置为100x100 px,它可以完美地工作。

问题:

我们为什么不只放置单个图像,比如说 submit.png

  1. 200x200 像素 (submit.png)

并在interface builder 中设置UIButton 大小为100x100 像素,retina 和non-retina 设备将使用相同的图像。

使用两张图片而不是一张视网膜大小的图片的真正原因是什么?

另一个类似的问题,

iPhone 5 仅在retina 显示中可用,但我们必须将其Default 图像放置为Default-568h@2x.png。为什么是 2 倍?

【问题讨论】:

  • 您是否尝试过删除普通图像并直接在界面生成器上提供视网膜图像。即通过界面生成器直接在 UIButton 上分配 submit@2x.png。我们通常会这样做,并且它可以在正常设备中正常工作,因为我猜 UIButton 的大小会相同
  • 是的,我通常会像你提到的那样做,但我想知道为什么 Apple 文档说要使用两个不同的图像,但我仍然无法获得任何真实的来源信息。

标签: iphone ios retina-display


【解决方案1】:

如果您阅读此文档Custom Icon and Image Creation Guidelines,则在 ios 中图像的概念也很清楚

例如,如果你想创建图像

100 x 100 像素 所以它必须具有 163 分辨率 ppi submit.png NON-retina device

200 x 200 px 所以它必须具有 326 分辨率 ppi submit@2x.png Retina device

对于 iPad:-

400 x 300 px 所以它必须具有 264 分辨率 ppi submit@2x~ipad.png Retina iPad device

200 x 150 px 所以它必须具有 132 分辨率 ppi submit~ipad.png Non-retina iPad device

看看这张图片:-

图片来源来自This

当我们想为 iPad 和 iPhone 指定不同版本的图像时,我们反复灌输 @2x。为高分辨率图像包含 @2x 修饰符是新的,它让系统知道该图像是标准图像的高分辨率变体。

这是操作系统调整窗口大小以填充 iPhone 5 显示屏所需的关键更改。已发布 writeup 来说明此调整以及您可能需要进行的其他与大小相关的调整。

希望这是对图像分辨率及其大小有用的信息。

【讨论】:

  • 您能告诉我您从哪里获得有关分辨率的信息吗?比如 iPhone 的 163 和 326 分辨率。正如我的设计师设计的视网膜尺寸为 72 DPI,然后使用相同的 DPI 缩小图像并将图像转换为非视网膜尺寸。
  • apple.com/iphone/specs.html 看看这是苹果 iphone5 产品 1136 x 640 像素分辨率,326 ppi 所以非 Ratine 将其限制为 163 的一半
  • 这是什么意思?我们应该为视网膜设计 320x480 像素大小、326DPI 和 320x480 像素大小、普通设备 163 DPI 的应用程序?或者我们应该为正常设计 72DPI 尺寸为 320x480 像素,为视网膜设计 72DPI 尺寸为 640x960 像素?
  • 我在讨论 ** PPI ** 我们应该设计 320x480 像素大小的应用程序,视网膜 326 ppi 和 320x480 像素大小,163 PPI 你知道 DPI 和 PPI 有什么不同吗... ?检查这个:-imagescience.com.au/kb/questions/31/… 向您的设计师询问有关 DPI 和 PPI 的更多信息
【解决方案2】:

使用非视网膜图像的主要目的是由于所需的缩小操作,在旧设备上提高性能和图像质量。

因此,对于旧设备的性能,您应该使用非视网膜图像。

【讨论】:

  • 有什么解决方案可以让我们只能将一个图像用于旧版本和新版本。我的意思是我们可以用任何类型的代码或其他东西来做吗??
  • 我认为没有。因为我们需要旧设备的非视网膜图像。如果我们使用视网膜图像,性能就会下降。
  • 这意味着我们必须有两种类型的图像,一种是非视网膜图像,另一种是视网膜,如果应用程序需要在旧设备中支持。
  • 这两张图片有什么区别。只是分辨率不同。但是对于今天的新设备。我们真的也需要非缩放图像吗?
【解决方案3】:

之所以必须提供 2 张图像,是因为仍有人在运行不支持视网膜显示的早期设备。由于运行视网膜的人,它们缺乏像素数量,因此我们提供正常数量。 iphone 5 要求图像文件中的@2x 是因为@2x 文件名是处理视网膜显示图像的标准约定。

这就是为什么当你问我们为什么不把 200x200 的图像放在 100x100 按钮中的原因。好吧,如果你正在运行一个视网膜设备,那个按钮中的图像看起来就像你画的那样;但是,如果您运行的是没有视网膜的 3gs 之类的东西,那么您在该按钮中的图像很可能会变得非常块状或模糊,因为像素与设备的比例不匹配。

希望这有助于清除任何问题!

【讨论】:

    【解决方案4】:

    是的,您可以只将视网膜图像用于视网膜和非视网膜设备。如果您在imageviews、按钮等中使用它们,请将它们设为scaletofill/aspectfill/aspectfit 或任何您想要的。

    但这样做的问题是,不必要的大尺寸图像会被加载到内存中,并且图像的大小调整也需要一些处理。

    使用单独的图像确实会增加 App Bundle 的大小,但会减少应用程序在运行时的实际内存使用量。

    【讨论】:

      【解决方案5】:

      1- 如果您想支持您的应用程序同时支持 Retina 和非 Retina 设备,您需要遵循文件名标准。如果您只想支持视网膜设备,则无需添加默认图像(button.png)。如果您想同时支持 Retina 和非 Retina 设备,则需要添加两个图像以及在界面生成器中不需要添加像 @2x 这样的全名。您只需添加图像的名称。主要的基础是两个图像的名称应该相同。 Ex: Non retina-->Button.png、Retina-->Button@2x.png、IE-->Button

      2 - iPhone5 仅具有视网膜显示屏。因此,如果您为 iPhone5 添加默认图像,它会自动在 iPhone5 设备中运行。苹果正在遵循这些标准。所以我们需要跟进。

      注意: Xcode 会自动处理所有这些类型的图像。

      【讨论】:

        猜你喜欢
        • 2014-03-19
        • 2013-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多