6

我在 viewController.m 中编写了后台代码:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]];

我有不同图片的正确名称:

image.png for non-retina display (320x480)

image@2x.png for retina display (640x960)

image-568h@2x.png for iPhone 5 (640x1136)

但是当我在模拟器中运行它时,它不会使用 iPhone 5 屏幕的 image-568h@2x.png 它只需要 4s 屏幕的 image@2x 并缩放它以适应屏幕......我不知道是否有iPhone 5 屏幕上使用 image-568h@2x 的任何编码?

我使用 Xcode 4.5

4

3 回答 3

13

iPhone 5 是视网膜,就像 iPhone 4 和 4S 一样,@2x-image 将自动用于所有这些设备。它只是 iPhone 5 的名为“-568h@2x”的启动图像。您需要编写一些代码来使用不同的图像,这样可以工作:

NSString *filename = @"image.png";
CGRect screenRect = [[UIScreen mainScreen] bounds];
if (screenRect.size.height == 568.0f)
    filename = [filename stringByReplacingOccurrencesOfString:@".png" withString:@"-568h.png"];

imageView.image = [UIImage imageNamed:filename];
于 2012-10-25T14:21:12.080 回答
3

如果您尝试使用[UIImage imageNamed:@"image.png"]并希望image-568h@2x.png从 iPhone 5 的捆绑包中自动挑选,它将无法正常工作。自动拣货仅适用于 iPhone 4 和 4S。

Default-568h@2x.png在 iPhone 5 中,只会自动选取名为 as 的默认图像。

对于普通图像,如果您有 iPhone 5 的单独图像,请尝试使用此代码

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    // code for 4-inch screen
} else {
    // code for 3.5-inch screen
}
于 2012-10-25T14:13:01.600 回答
2

我认为假设您可以将-568h@2x技巧应用于所有图像文件是不正确的。我认为它只适用于Default-568h@2x.png. 这是 iOS 在 4" 显示设备上启动应用程序时查找的文件,以及用于在 SDK 中启用 4" 显示支持的“标志”。例如,一旦您包含此特定文件,您的表格视图将填满屏幕。

我没有读到任何建议您可以简单地提供带有-568h@2x文件名组件的任何图像并自动使用它。您必须根据屏幕尺寸自己执行此操作,例如[UIScreen mainScreen].bounds.size.height.

于 2012-10-25T14:12:01.060 回答