0

我正在 iPhone5 中测试我的应用程序。

我复制了一个名为 image1.png 和 image1@2x.png 的图像,并在 iPhone5 中尝试了它,在我的代码的某些部分:

UIImage *myImage = [UIImage imageNamed:@"image1.png"] ;

CGFloat imageWidth = myImage.size.width;
CGFloat imageHeight = myImage.size.height;

  NSLog(@"image %f %f", imageWidth,imageHeight);

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;


NSLog(@"screen %f %f", screenWidth, screenHeight);

在 iphone 中运行时,在控制台中我看到:

2013-04-05 13:13:48.386 Vallabici[2413:907] image 320.000000 57.000000
2013-04-05 13:13:48.389 Vallabici[2413:907] screen 320.000000 568.000000

因为它使用的是普通屏幕而不是视网膜。

怎么可能?

4

3 回答 3

2

视网膜设备上的图像大小不应该改变,只是比例。要获取图像的比例,请添加以下日志:

 NSLog(@"scale %f", myImage.scale);
于 2013-04-05T11:20:34.070 回答
2

bounds返回以点为单位的屏幕大小,而不是像素

请参阅文档

也是如此size

于 2013-04-05T11:20:45.753 回答
1

屏幕始终以像素为单位

和视网膜像素总是=非视网膜像素

通过代码,您将始终获得 230x480 的屏幕像素(在 iPhone < 5 上)

不同之处在于图像的渲染方式:在视网膜显示器上,它们以双倍分辨率渲染

这就像打印机设备:您可以将小图像打印到填充它的 A4 纸上,然后打印更大的图像......

打印到纸上的图像始终具有相同的度量(以英寸或厘米为单位),但结果的质量会发生变化

于 2013-04-05T11:25:05.903 回答