我有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!
发生了什么事?
谢谢!
答案 0 :(得分:9)
-568@2x
后缀仅适用于Default.png启动图像。 UIImage imageNamed:
(或其他UIImage
方法)没有使用特殊后缀。如果您需要在4“屏幕上显示特殊图像,则需要添加代码以自行获取所需图像。
答案 1 :(得分:7)
以下适用于iPhone。对于iPad,您需要额外的图像。
对于背景图像的三个版本,请使用以下名称:
(您不需要“-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 +的新屏幕尺寸方面遇到了麻烦。
我所做的是对不同的图像文件使用这种命名约定:
然后通过在项目中包含此Gist的代码来自动生成(全尺寸)图像: https://gist.github.com/kevindelord/fe2e691d06ab745fbb00
你没有别的事可做。在代码中实例化图像时:
[UIImage imageNamed:@"background.png”];
Gist中的分类类将automatically
创建与当前设备对应的图像。
UIImage+Autoresize上记录了一个Pod CocoaDocs。