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

Posted

技术标签:

【中文标题】如何为所有分辨率制作全屏图像【英文标题】:How to make a fullscreen image for all resolutions 【发布时间】:2016-02-18 23:36:43 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

    制作原始图像的副本,并针对不同的屏幕尺寸调整这些副本的大小。 iPhone 4 需要 320x480 @2x,iPhone5 需要 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 中创建的方法加载图像,然后将图像居中到视图的中心。

【讨论】:

我想我还是不明白第 1 点。图像@3x 不能是 414x736 像素,对吗?图像有磅值吗?这不只是一个xcode的事情吗?我应该向设计师要求多大? 如果图像在 iPhone 设备中的点为 414x736 @3x,那么它的实际大小需要为 1242x2208 像素,即点乘以 3。转到此link 以查看点与ios 设备中的像素。

以上是关于如何为所有分辨率制作全屏图像的主要内容,如果未能解决你的问题,请参考以下文章

如何为所有 Android 分辨率准备图像?

如何为 ios、android 和 web 添加不同分辨率的图像?

屏幕尺寸分辨率问题

如何在imageView上设置自动布局约束以获得良好的分辨率图像?

具有全屏图像视图的启动屏幕 .XIB

我需要为所有 iphone 制作应用程序的图像分辨率或大小? [复制]