-1

我想将已经在应用商店中发布的功能齐全的应用移植到 ios 6.0 和 iPhone 5 上,以避免那些黑沙箱。

我添加了 Default-568h@2x.png 图像以启用 iphone 5 分辨率支持,并且黑框不再显示在模拟器中。

但是当我检查屏幕的分辨率([UIScreen mainScreen])来检测 iPhone 5 时,我总是得到 320x568 的分辨率。我究竟做错了什么?

4

1 回答 1

2

在 iPhone App 中如何检测设备的屏幕分辨率

Jman012 对您的问题的回答:

CGRect screenBounds = [[UIScreen mainScreen] bounds];

这将为您提供整个屏幕的分辨率(以点为单位),因此对于 iPhone,它通常是 320x480。即使 iPhone4 的屏幕尺寸更大,iOS 仍然返回 320x480 而不是 640x960。这主要是因为较旧的应用程序中断。

CGFloat screenScale = [[UIScreen mainScreen] scale];

这将为您提供屏幕的比例。对于所有没有 Retina 显示屏的 iPhone 和 iPodTouch,将返回 1.0f,而 Retina Display 设备将返回 2.0f。现在,如果你想获得 iOS 设备屏幕的像素宽度和高度,你只需要做一件简单的事情。

CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);

通过乘以屏幕的比例,您可以获得实际的像素分辨率。这段代码的用处在于它可以在 Apple 的后续产品中使用,例如,如果 iPad 获得了 Retina 显示屏,那么使用比例尺将始终为您提供真正的像素分辨率。

http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html#//apple_ref/doc/uid/TP40010156-CH14-SW7

于 2013-01-03T15:05:29.603 回答