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

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

这是怎么回事?

谢谢!

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

以下为iPhone的作品。 对于iPad,您需要额外的图像。

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

  1. background-480h.png(320×480)
  2. background-480h@2x.png(640×960)
  3. background-568h@2x.png(640×1136)

(你不需要“-568h.png”图片,因为没有320×568的iPhone屏幕。)

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

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

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

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

我知道这是一个古老的线程,但我对iPhone 6/6 +的新屏幕尺寸有麻烦。

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

  • 如果@ 1x小旧手机没有
  • @ 2x for iPhone 4
  • -568h @ 2x for iPhone 5
  • -667h @ 2x for iPhone 6
  • @ iPhone 3 Plus for iPhone 6 Plus

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

你没有别的事情要做 当你在你的代码中实例化一个图像时:

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

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

在CocoaDocs上有一个UIImage + Autoresize的Pod。