我对如何使用模拟器构建需要支持 iphone 4 的新更高分辨率的应用程序感到有点困惑。
除了选择 iphone4 模拟器来运行应用程序时,[[UIScreen mainScreen] bounds]
我会返回 960x640,但它仍然会给我旧的分辨率 (480x320) 吗?
尽管 iphone4 模拟器在我的屏幕上显示为一个巨大的手机,但它似乎仍然只有 480x320 像素。例如,当我想在第 700 行显示某些内容时,它会从屏幕上掉下来吗?
感谢您对此的任何意见。
UIScreen 有一个新scale
方法。将 bounds.size 乘以比例以获得像素。您可以将未缩放的值视为点或虚拟像素。
请注意,UIScreen 至少从 3.2 开始就有一个 scale 方法,但它只在 4.0 之后才被记录,所以 respondsToSelector 会欺骗你。即使我想了解 UIScreen,我也会检查 UIImage 的比例。
UIScreen *mainScreen = [UIScreen mainScreen];
CGFloat scale = [mainScreen scale];
CGRect bounds = [mainScreen bounds];
CGRect pixels = bounds;
if ( scale > 0 ) {
pixels.origin.x *= scale;
pixels.origin.y *= scale;
pixels.size.width *= scale;
pixels.size.height *= scale;
}
关于您关于分辨率的第二个问题,也许这会对您有所帮助。
从 iOS4 及更高版本开始,有像素、点和比例因子。
[[UIScreen mainScreen] bounds]
bounds 将返回点(480x320) 而不是像素 (960x640)。
iOS4 应用程序编程指南(点与像素):
在 iOS 4 和更高版本中,UIScreen、UIView、UIImage 和 CALayer 类公开了一个比例因子,告诉您该特定对象的点和像素之间的关系。在 iOS 4 之前,这个比例因子被假定为 1.0,但在 iOS 4 及更高版本中,它可能是 1.0 或 2.0,具体取决于底层设备的分辨率。将来,其他比例因子也可能是可能的。