gpt4 book ai didi

objective-c - 图像分辨率支持 iPhone 3G、iPhone 4 和 iPhone 5

转载 作者:行者123 更新时间:2023-11-29 11:05:05 26 4
gpt4 key购买 nike

我知道以前也有人问过类似的问题,但我真的处境很糟糕。

我正在构建一个可以在 iPhone 3GiPhone 4iPhone 5 上运行的应用程序。

我是 iOS 开发的初学者,到目前为止,我已经编写了大量仅适用于 iPhone 模拟器的 UI 代码。我专注于通用语言和 SDK 功能,以了解通用的 iOS 开发,因此大多忽略了模拟器为我提供的解决方案之外的任何分辨率支持。

现在,我面临着这些不同 iPhone 版本之间的可移植性要求,我很困惑。首先让我说说我对 iPhone 3 和 iPhone 4 屏幕支持细节的了解,如果我做错了什么请纠正我(暂时完全忽略 iPhone 5):

  1. 系统假定一个基于320x480 POINT 的查看区域。在 iPhone 3 中,实际屏幕尺寸相同,但 iPhone 4 使用实际 640x960 像素 尺寸的屏幕。

  2. 我们根据 320x480 尺寸编码和生成我们的 View 。我们提供普通分辨率图像(例如 100x100 大小的 some_image.png)和带有 "@2x" 后缀的高分辨率版本。 (200x200 大小的 some_image@2x.png)都在同一个应用程序包中。

  3. 当调用 UIKit 图像加载方法时,例如 UIImageUIImageView 系统会选择我们的正确版本图像并根据当前设备(iPhone 3 或 iPhone 4)加载它们。

到目前为止,为了支持低分辨率和高分辨率 iPhone 3GiPhone 4,我谨慎地提供这三个步骤。

假设我有一张尺寸为 100x100 的图像,我将在 UIImage 对象中使用它。我还提供了 200x200 高分辨率版本,我认为这适用于带有 "@2x" 后缀的 iPhone 4 和 iPhone 5。

但假设我有一张覆盖整个背景的 320x480 背景图片,我提供了带有 “@2x”640x960 版本的背景图片strong> 后缀也是如此。

但是在尺寸为 640x1136 的 iPhone 5 屏幕上会发生什么?我应该准备一个 iPhone5 分辨率的图像并在 if(IPHONE5 == true) 条件下加载它吗?

处理这个问题的正确方法是什么?

最佳答案

您需要处理的几个问题:

  1. 一张“全屏”/背景图片/其他与屏幕纵横比匹配的图片
  2. 与屏幕宽高比无关的图像

在#1 的情况下,您需要提供具有不同分辨率的相同/相似图像。一个适用于 320x480 像素设备,一个适用于带 @2x 的视网膜显示屏(640x960 像素),第三个适用于 iPhone 5 显示屏(如果它是通用应用程序,则可能会单独显示 iPad 图像)。

不幸的是,iOS 没有为 iPhone 5 显示屏提供类似 @2x 命名的任何东西。一个常见的约定似乎是在文件名中包含 @568h,但 iOS 不会自动使用它。解决方案是确定显示器是否为 iPhone,是否为较高的显示器。以下代码片段将允许您执行此操作:

// Is it an iPhone with the tall screen?
if ([[ UIScreen mainScreen ] bounds ].size.height == 568.))

// use the tall image
image = [UIImage imageNamed:@"myImage@568h.png"

else {

// use 'default' image (will use myimage@2x.png if iPhone retina,
// myImage~ipad.png if iPad, myImage~ipad@2x.png if iPad retina)
image = [UIImage imageNamed:@"myImage.png"
}

对于 #2,由于您可能希望 100px x 100px 在所有设备上显示为正方形,因此您可以仅提供 100px x 100px 和 200px x 200px 图像,后者的文件名中包含 @2x。

关于objective-c - 图像分辨率支持 iPhone 3G、iPhone 4 和 iPhone 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032641/

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