iOS不使用-568h@2x.png

时间:2012-11-01 02:56:14

标签: iphone objective-c ios cocoa-touch

我有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!

发生了什么事?

谢谢!

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:7)

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

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

  1. background-480h.png(320x480)
  2. background-480h@2x.png(640x960)
  3. background-568h@2x.png(640x1136)
  4. (您不需要“-568h.png”图片,因为iPhone屏幕没有320x568。)

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

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

    iOS自动附加“@ 2x”(如果适用)。

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

答案 2 :(得分:2)

我知道它是一个老线程,但我在iPhone 6/6 +的新屏幕尺寸方面遇到了麻烦。

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

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

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

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

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

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

UIImage+Autoresize上记录了一个Pod CocoaDocs