设置图像以适合 iPhone 5 和 iPhone 6

Posted

技术标签:

【中文标题】设置图像以适合 iPhone 5 和 iPhone 6【英文标题】:Setting UIImage to fit iPhone5 and iPhone6 【发布时间】:2015-01-07 11:39:20 【问题描述】:

我们想在代码中设置一个适合 iPhone5 和 iPhone6 的图像。

我们有一个图像,它的大小已准备好用于 iPhone6 ,我们希望它被缩放并放置在 iPhone5 上的相同位置。

所以,下一个代码在 iPhone6 上运行良好,但在 iPhone5 上,图像没有缩放,我猜是因为我采用 实际图像 的大小,而不是比例到屏幕尺寸: (我在应用程序上也有启动图像)

 UIImage *imgt=[UIImage imageNamed:@"title.png"];
    UIImageView *title=[[UIImageView alloc] initWithFrame:CGRectMake((width-imgt.size.width)/2.0,imgt.size.height/2.0, imgt.size.width, imgt.size.height)];
    title.image=imgt;
    [self.view addSubview:title];

问题是,我怎样才能在 iPhone5s 上获得 缩放的图像尺寸 ?他所做的是取实际尺寸(iPhone6 的大尺寸),但因为我知道图像尺寸是按比例缩放的,我希望得到缩放后的尺寸 imgt.size.width

【问题讨论】:

您查看过UIImageViewcontentMode 吗?如果你只是在做一个全屏UIImage,它可能是一个简单的例子,将UIImageView.contentMode设置为UIViewContentModeScaleAspectFitUIViewContentModeScaleAspectFill 【参考方案1】:

您必须制作一个单独的图像以适应 iPhone 5/5s。您可以在 Photoshop 或其他一些编辑程序中执行此操作。制作缩放图像后,您可以设置条件语句来检查用户是否正在使用设备。我假设您知道如何执行此操作,但无论如何我都会在下面放一些代码。

检查用户正在使用的设备

#include <sys/types.h>
#include <sys/sysctl.h>

- (NSString *) platform 
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *device = malloc(size);
sysctlbyname("hw.machine", device, &size, NULL, 0);
NSString *platform = [NSString stringWithUTF8String:machine];
free(device);
return platform;

这将生成一个可用于确定设备的 NSString。然后,您可以使用它设置一个 if then 语句。您可以根据另一个设备字符串检查平台字符串。

【讨论】:

如果他担心他的应用程序包的大小(尤其是如果他有很多可能是真的图片),他最好包含一个大的库存图片,然后使用UIImage 上的类别在运行时动态调整/裁剪图像。苹果为此提供的工具非常好而且非常快。在某些情况下,这可以轻松节省数十兆字节的空间。另外,我认为通过检查屏幕尺寸来确定设备要容易得多。我是这样做的…… 这是我做的一个例子(其他的和这个非常相似):#define IS_IPHONE_4 (MAX([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width) == 480.0) 谢谢,但你不能每次加载图片时都设置这个条件,它的代码很多......我必须寻求另一种解决方案。

以上是关于设置图像以适合 iPhone 5 和 iPhone 6的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 模拟器不显示 iphone 5 兼容图像

适合放大 iPhone 上的地图

图像超过 iPhone 5 上的整个屏幕

如何在图像视图中将图像设置为适合屏幕

UITabbar ios的背景图

iPhone 5 的主屏幕网页应用程序的适合高度