我正在更新一个在主页面上有全屏图像的旧应用程序。我需要提供哪些尺寸和比例的图像来支持iPhone 4,5,6和6 +?
如何使用资产目录设置所有这些分辨率并使其“正常工作”?我已经设置了UIImageView来填充主视图。我想把它指向资产组或其他什么。
答案 0 :(得分:1)
这是我的解决方案。它可能不是最好的,但我保证它会起作用。
制作原始图像的副本,并针对不同的屏幕尺寸调整这些副本的大小。对于iPhone 4,iPhone5需要320x480 @ 2x,320x568 @ 2x,iPhone 6需要375x667 @ 2x,iPhone 6+需要414x736 @ 3x。请记住,单位不是像素。以下是有关详细iPhone屏幕尺寸的链接:iPhone Screen Sizes
在运行时检测屏幕大小并加载不同的图像以适合屏幕。您可以通过将以下代码作为类别添加到UIImage类来完成此操作。
代码:
#define IPHONE44S 480
#define IPHONE55S 568
#define IPHONE6 667
#define IPHONE6PLUS 736
#import "UIImage+ZCDynamicUImageSize.h"
@implementation UIImage (ZCDynamicUImageSize)
+(UIImage *)dynamicSizedImageWithName:(NSString *)name{
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
UIImage *image;
if (screenHeight == IPHONE55S) {
image = [UIImage imageNamed:[NSString stringWithFormat:@"%@-568",name]];
}
else if (screenHeight == IPHONE6){
image = [UIImage imageNamed:[NSString stringWithFormat:@"%@-667",name]];
}
else if (screenHeight == IPHONE6PLUS){
image = [UIImage imageNamed:[NSString stringWithFormat:@"%@-736",name]];
}
else{
image = [UIImage imageNamed:[NSString stringWithFormat:@"%@-480",name]];
}
return image;
}
使用名称后跟其高度更改所有图像的名称。例如,您的图像名称为“MyImage.png”,它是iPhone5的图像,并将其名称更改为“MyImage-568@2x.png”。
最后,使用在步骤2中创建的方法加载图像,然后将图像居中放置在视图的中心。