Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios调整全屏图像大小以适应多种屏幕大小_Ios_Uiimageview_Screen_Scale - Fatal编程技术网

ios调整全屏图像大小以适应多种屏幕大小

ios调整全屏图像大小以适应多种屏幕大小,ios,uiimageview,screen,scale,Ios,Uiimageview,Screen,Scale,这更像是一个设计问题 我想了解当涉及到不同的iphone屏幕尺寸时,如何处理图像缩放:3.5英寸和4英寸。我有一个4英寸屏幕的568pt全屏图像。我应该为3.5机箱创建单独的图像还是缩小原始图像?在执行此操作时,我是否需要在代码中放入一组if/else块来检查设备类型以确定使用哪个图像 有更干净的方法吗?如果您可以节省资源大小,最好为所有相关屏幕大小使用单独的资源。但是,在这一点上,每个人都有自己的看法。为作业加载正确资源的一种简单方法是为图像名称编写一个宏,并在加载图像的每个位置使用该宏,如下

这更像是一个设计问题

我想了解当涉及到不同的iphone屏幕尺寸时,如何处理图像缩放:3.5英寸和4英寸。我有一个4英寸屏幕的568pt全屏图像。我应该为3.5机箱创建单独的图像还是缩小原始图像?在执行此操作时,我是否需要在代码中放入一组if/else块来检查设备类型以确定使用哪个图像


有更干净的方法吗?

如果您可以节省资源大小,最好为所有相关屏幕大小使用单独的资源。但是,在这一点上,每个人都有自己的看法。为作业加载正确资源的一种简单方法是为图像名称编写一个宏,并在加载图像的每个位置使用该宏,如下所示:

// S_IMG as in sized image?
#define S_IMG(img) [img stringByAppendingString: (([[UIScreen mainScreen] bounds].size.height == 568.0)? @"-568" : @"")]
然后在加载图像时,您只需执行以下操作

[UIImage imageNamed:S_IMG(@"horse")];

您将拥有
horse.png
horse@2x.png
马-568@2x.png

关于屏幕大小,我也有同样的问题。最后,我为每个设备使用了单独的资源,并在代码中检测屏幕大小以加载正确的图像文件


我写下了我的步骤,如何根据不同的屏幕尺寸进行缩放,如果纵横比不同,则进行裁剪。因为有这么多图像,我最终制作了一个工具,可以为我的每个屏幕大小自动调整和裁剪图像。

您可以编写UIImage类别,UIImage+4英寸显示

超载

+ (Nullable UIImage *) imageNamed: (NSString *) name; // load from main bundle
增加了分析功能

+ (BOOL) has4InchDisplay
{
     return ([UIScreen mainScreen] .bounds.size.height == 568);
}

然后连接字符串xxx-568@2x.png

您可以使用“Aspect Fit”缩小图像,但它会剪裁图像。最好使用符合3.5英寸标准的图像。有关检查屏幕是3.5英寸还是4英寸的信息,请参阅。使用
宽屏
一个,而不是
是iphone5
一个。