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

时间:2016-02-18 23:36:44

标签: ios uiimageview asset-catalog

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

如何使用资产目录设置所有这些分辨率并使其“正常工作”?我已经设置了UIImageView来填充主视图。我想把它指向资产组或其他什么。

1 个答案:

答案 0 :(得分:1)

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

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

  2. 在运行时检测屏幕大小并加载不同的图像以适合屏幕。您可以通过将以下代码作为类别添加到UIImage类来完成此操作。

  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中创建的方法加载图像,然后将图像居中放置在视图的中心。