gpt4 book ai didi

ios - 截至 2014 年如何支持各种 iphone 屏幕尺寸?

转载 作者:可可西里 更新时间:2023-11-01 03:38:39 26 4
gpt4 key购买 nike

我几乎完成了我的第一个 iPhone 应用程序的构建,我正在尝试添加背景图像,但我发现它有点令人困惑,因为现在不同的 iPhone 版本之间有大约 3 或 4 个不同尺寸的屏幕,具有不同的分辨率开机。

所以虽然我知道整个 image@2x.png 东西,但我仍然不知道我真正需要什么。如果我想让我的应用程序在 iPhone 4/4s、5s/5c、6/6+ 上运行,我需要多少个不同版本的背景图片,以及尺寸和分辨率是多少?

我用谷歌搜索了一下,但没有找到 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

iPhone 6 Plus:1242 x 2208

这意味着如果你想支持这些设备,你需要准备4张以上分辨率的启动图像。您可以使用 iOS 模拟器捕获不同分辨率的屏幕截图。您的应用程序将在 compatibility mode 中运行如果找不到特定分辨率的启动图像,则在新分辨率设备上。 compatibility mode意味着您的 View 将被缩放以适应新的屏幕尺寸,同时仍然具有相同的逻辑尺寸。

编辑:

我认为 op 误解了什么 @2x@3x意思是。 iPhone 6 的分辨率是750(pixels) x 1334(pixels), 326 pixels per inch .这是真实的决议。和 375(points) x 667(points)如果支持 native 分辨率,则为逻辑大小。 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 中运行其中将缩放所有 View 。

假设有一个名为 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];

关于ios - 截至 2014 年如何支持各种 iphone 屏幕尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27310423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com