设置图像以适合 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
【问题讨论】:
您查看过UIImageView
的contentMode
吗?如果你只是在做一个全屏UIImage
,它可能是一个简单的例子,将UIImageView.contentMode
设置为UIViewContentModeScaleAspectFit
或UIViewContentModeScaleAspectFill
。
【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章