图像和视网膜显示的大小

时间:2014-09-16 11:28:14

标签: ios objective-c

快速提问。

如果为UINavigationBar设计图像,我只需将一幅图像设计为320 x 64像素,然后进行相应缩放吗?所以:

  • 320 x 64 for iPhone
  • 640 x 128 for iPhone 4/5(并添加@ 2x)
  • 960 x 192 for iPhone 6(并添加@ 3x)

令我困惑的是各种显示尺寸和制作图像的大小:

我认为我的显示分辨率正确如下:

  • iPhone 320 x 480
  • iPhone 4为640 x 960
  • iPhone 5为640 x 1334
  • iPhone 6为750 x 1334
  • iPhone 6 Plus为1242 x 2208

如果我不只是制作一张图像并进行缩放,我是否必须为每部手机创建3张图像?

e.g。 iPhone 4:

  • 640 x 128 for Standard
  • 1280 x 256 for @ 2x
  • 1920 x 384 for @ 3x。

然后对所有其他手机都一样吗?

我确信这不可能是正确的,但此刻有点困惑。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不建议缩放图像 up ,因为这会导致在更高分辨率的设备上显着丢失图形保真度(即'jaggies'或模糊)。如果有的话,你应该在缩小规模方面犯错误。

您的选择:

  1. 为每个逻辑坐标空间设计图像。例如,对于导航栏,这将需要具有标准,2x和3x尺寸的条形背景。此外,如果您希望在iPhone上支持横向模式的导航栏。

    但是,请注意,即使在内部也无法保证设备的宽度 相同的逻辑坐标空间(即iPhone 5s和iPhone 6)将显示一个 导航栏,所以你可能想要使用UIImage方法 resizableImageWithCapInsets:创建一个横跨导航栏的图像,无论它有多宽。

    https://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/index.html#//apple_ref/occ/instm/UIImage/resizableImageWithCapInsets

    值得注意的是,如果您正在为iPhone写作,您可能会放弃使用1x图像,因为不再支持使用1x图像的iPhone。但是,在iPad上,你仍然需要与iPad 2和原装iPad mini抗争。

  2. 创建一个3x图像并将其用于所有内容。允许iOS根据需要自动缩小。这可能会引入一些图形缺陷(虽然不像扩展那么糟糕,甚至可能都不明显)并且效率稍差 - 即。它消耗更多内存,理论上可能需要更长时间才能加载。这有些不太优雅,我不推荐它。

  3. 您的最后一个选择是从iOS 7开始采用平面设计原则,并尽可能放弃使用详细/纹理元素。随着iOS设备显示器的尺寸和密度的增加,您可能会发现这会让您和您的设计师产生更少的麻烦 - 而且它可能更适合iOS 7+设计美学。

  4. 另一件事......

    我建议您了解点和像素之间的差异。这将有助于您了解这一切。

    https://developer.apple.com/library/ios/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html#//apple_ref/doc/uid/TP40010156-CH14-SW7

    基本上,您不需要设计不同的手机,您需要设计3个左右(此时真的是2个)逻辑坐标空间。通过使用如上所述的可调整大小的图像,并且 - 可选地 - 创建更大的图像以填充更大的设备上的更多空间,您不应该真正创建超过2-3个版本的任何图像。