如何为所有分辨率制作全屏图像

How to make a fullscreen image for all resolutions

我正在更新一个主页上有全屏图像的旧应用程序。我需要提供什么尺寸和比例的图片来支持 iPhone 4、5、6 和 6+?

如何使用 Asset Catalogs 一次性设置所有这些分辨率并获得 "just work"?我已经设置了一个 UIImageView 来填充主视图。我只想将它指向一个资产组或其他东西。

这是我的解决方案。它可能不是最好的,但我保证它会起作用。

  1. 制作原始图像的副本,并针对不同的屏幕尺寸调整这些副本的大小。对于 iPhone 4,您需要 320x480 @2x,iPhone5 需要 320x568 @2x,iPhone6 需要 375x667 @2x,iPhone 6+ 需要 414x736 @3x。请记住单位是点而不是像素。这是 link 关于 iPhone 屏幕尺寸的详细信息:iPhone Screen Sizes

  2. 在 运行 时间内检测您的屏幕尺寸并加载不同的图像以适合屏幕。您可以通过将以下代码作为类别添加到 UIImage class.

  3. 来完成此操作

代码:

#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;
}
  1. 更改所有图像的名称,名称后跟高度。比如你的图片名称是"MyImage.png",是iPhone5的图片,把它的名字改成"MyImage-568@2x.png".

  2. 最后,使用步骤 2 中创建的方法加载图像,然后将图像居中到视图的中心。