1

我使用以下方法显示视网膜图像(扩展名为@2x.png):

myImage = [UIImage imageNamed:@"iPhoneBackground@2x.jpg"];

UIGraphicsBeginImageContext(myImage.size);
[myImage drawAtPoint: CGPointZero];
myImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

imageView = [[UIImageView alloc] initWithImage:myImage];
NSLog(@"Dimension:%f x %f",myImage.size.width,myImage.size.height);
[self.view addSubview:imageView];

然而,图像在视网膜模拟上显示两倍于其大小。图像和模拟器都具有 640 x 960 分辨率,所以我希望图像充满屏幕。
我知道除了 CGContext 之外还有其他方法可以显示图像,但这是我在代码中用于其他目的所需的方式。
知道为什么我有这个定义问题吗?

4

2 回答 2

4

您不需要显式加载视网膜图像,如果设备有视网膜显示器,@2x 将自动附加到图像名称。

将您的 UIImage 代码更改为:myImage = [UIImage imageNamed:@"iPhoneBackground.jpg"];

于 2013-07-27T18:58:18.157 回答
4

不要使用@2x 后缀

来自苹果文档:

UIImage 类处理将高分辨率图像加载到您的应用程序所需的所有工作。创建新图像对象时,您使用相同的名称来请求图像的标准和高分辨率版本。例如,如果您有两个图像文件,分别名为 Button.png 和 Button@2x.png,您将使用以下代码来请求您的按钮图像:

UIImage *anImage = [UIImage imageNamed:@"Button"];

于 2013-07-27T18:58:40.770 回答