我几乎完成了第一个iPhone应用程序的构建,并试图添加背景图像,并发现它有点令人困惑,因为如今在不同的iPhone版本中,大约有3或4个不同尺寸的屏幕,具有不同的启动分辨率。
因此,尽管我了解了整个过程[email protected]
,但我仍然不知道我真正需要什么。如果我想让我的应用程序在iPhone 4 / 4s,5s / 5c,6/6 +上运行,我需要多少个不同版本的背景图像,以及什么尺寸和分辨率?
我在Google周围搜索,没有找到2014年最新的一致答案。
另外,如果iPhone 6为1334x750 @ 3x,这是否意味着我应该包含4002x2250的背景?然后对于1920x1080 iPhone 6+ @ 3x,是否为5760 x 3240的图像?太好了!我觉得我必须对此有不正确的理解。
如果要支持iPhone 6 / Plus的本机分辨率,则需要添加启动图像(iOS 8之前的版本)或启动屏幕xib(iOS 8)。
iPhone 4 / 4S:640 x 960
iPhone 5 / 5S:640 x 1136
iPhone 6:750 x 1334
iPhont 6 Plus:1242 x 2208
这意味着如果要支持这些设备,则需要准备4个具有上述分辨率的启动映像。您可以使用iOS模拟器来捕获具有不同分辨率的屏幕截图。compatibility mode
如果找不到特定分辨率的启动图像,则您的应用将在新的分辨率设备上运行。compatibility mode
表示您的视图将在仍然具有相同的逻辑尺寸的情况下进行缩放以适应新的屏幕尺寸。
编辑:
我认为op会误解其作用@2x
和@3x
含义。iPhone 6的分辨率为750(pixels) x 1334(pixels), 326 pixels per inch
。这是真实的分辨率。并且375(points) x 667(points)
是如果支持初始分辨率下的逻辑大小。iPhone 6 Plus的分辨率为1242(pixels) x 2208(pixels), 401 pixels per inch
,逻辑大小为414(points) x 736(points)
。
这是具有不同分辨率的图像在iOS设备上的工作方式:
假设您要在iPhone 4s,iPhone 5 / 5S,iPhone 6 / plus上运行您的应用程序。您应该做的第一件事是提供4个启动映像以支持这些设备的本机分辨率。当iOS启动您的应用程序时,它将检查该应用程序是否提供了正确的启动图像以支持当前设备的本机分辨率。如果iOS找到它,则在启动时使用它,并且屏幕的逻辑大小正确,您的应用程序将正常运行。否则,您的应用程序将compatibility mode
在其中缩放所有视图的情况下运行。
假设foo.png
您的应用中有一个名为的图像,其逻辑大小为100(points) x 100(points)
。您希望该图像在以上所有设备中看起来都一样。您应该提供此图像的2个版本。一个是200(pixels) x 200 (pixels)
和应该被命名foo.png@2x
,另一个300(pixels) x 300(pixels)
命名foo.png@3x
。如果[UIImage imageNamed:@"foo"]
在iPhone 6 plus以外的设备上使用加载该图像,则该应用程序将加载名为的图像foo.png@2x
。否则,应用程序将加载foo.png@3x
并采样到300 * 84%(像素)x 300 * 84%(像素)。
而且,如果您从URL加载图像并需要在运行时呈现它。假设您得到的尺寸是{width:100, height:100}
,比例尺是1.0
。这意味着该图像的真实大小为100 * 1.0(pixels) x 100 * 1.0(pixels
。如果您不希望缩放它,则需要自己计算逻辑大小。您可以这样操作:
UIImage *image = ... // you get it from an url
CGFloat scale = [UIScreen mainScreen].scale;
CGFloat width = image.size.width / scale;
CGFloat height = image.size.height / scale;
CGRect frame = CGRectMake(50.0f, 50.0f, width, height)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
imageView.contentMode = UIViewContentModeCenter;
imageView.image = image;
[self.view addSubview:imageView];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句