9

我有 3 张图片:

test.png
test@2x.png
test-568@2x.png

在 IBOutlet 中,一个 UIImageView 被设置为显示 test.png。

在没有视网膜的 iPhone 3.5in 上,它显示 test.png

在带有视网膜的 iPhone 3.5in 上,它显示 test@2x.png

但是在带有视网膜的 iPhone 4in 上,它显示 test@2x.png !!!

这是怎么回事?

谢谢!

4

3 回答 3

9

-568@2x后缀仅适用于 Default.png 启动图像。UIImage imageNamed:(或其他UIImage方法)没有使用特殊的后缀。如果您需要 4" 屏幕上的特殊图像,您需要添加代码以自己获取所需的图像。

于 2012-11-01T02:58:16.220 回答
7

以下适用于 iPhone。对于 iPad,您需要额外的图像。

对于背景图像的三个版本,请使用以下名称:

  1. 背景-480h.png (320x480)
  2. 背景-480h@2x.png (640x960)
  3. 背景-568h@2x.png (640x1136)

(您不需要“-568h.png”图像,因为没有 320x568 iPhone 屏幕。)

设置背景图像时,只需将屏幕高度附加到图像名称:

NSString* imageName = [NSString stringWithFormat: @"background-%ih", (int)[[UIScreen mainScreen] bounds].size.height];
[view setBackgroundColor: [UIColor colorWithPatternImage: [UIImage imageNamed: imageName]]];

如果适用,iOS 会自动附加“@2x”。

您可以在图像名称的高度之后省略“h”,但我认为模拟默认图像的 iOS 约定很好。

于 2013-10-03T14:00:56.310 回答
2

我知道这是一个旧线程,但我在使用 iPhone 6/6+ 的新屏幕尺寸时遇到了问题。

我所做的是对不同的图像文件使用这个命名约定:

  • 如果@1x 小型旧手机则没有
  • @2x适用于 iPhone 4
  • -568h@2x适用于 iPhone 5
  • -667h@2x适用于 iPhone 6
  • @3x适用于 iPhone 6 Plus

然后只需在项目中包含此 Gist 中的代码即可自动生成(全尺寸)图像: https ://gist.github.com/kevindelord/fe2e691d06ab745fbb00

你没有别的事可做。当您在代码中实例化图像时:

[UIImage imageNamed:@"background.png”];

Gist 中的分类类将automatically创建与当前设备对应的图像。

在 CocoaDocs上记录了一个用于UIImage+AutoresizePod 。

于 2014-10-28T15:42:19.087 回答