我想将已经在应用商店中发布的功能齐全的应用移植到 ios 6.0 和 iPhone 5 上,以避免那些黑沙箱。
我添加了 Default-568h@2x.png 图像以启用 iphone 5 分辨率支持,并且黑框不再显示在模拟器中。
但是当我检查屏幕的分辨率([UIScreen mainScreen])来检测 iPhone 5 时,我总是得到 320x568 的分辨率。我究竟做错了什么?
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 显示屏,那么使用比例尺将始终为您提供真正的像素分辨率。