如何为所有分辨率制作全屏图像
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 设备中的像素。以上是关于如何为所有分辨率制作全屏图像的主要内容,如果未能解决你的问题,请参考以下文章
如何为 ios、android 和 web 添加不同分辨率的图像?