我对如何使用模拟器构建需要支持iphone 4更高分辨率的应用程序感到困惑。
我会选择iphone4模拟器来运行应用程序,[[UIScreen mainScreen] bounds]
会给我960x640,但它仍然给我旧分辨率(480x320)?
虽然iphone4模拟器在我的屏幕上显示为巨型手机,但它似乎仍然只包含480x320像素。例如,当我想在第700行显示某些内容时,它只会在屏幕上显示?
感谢您提供任何意见。
答案 0 :(得分:8)
UIScreen有一个新的scale
方法。将bounds.size乘以比例以获取像素。您可以将未缩放的值视为点或虚拟像素。
请注意,自至少3.2以来,UIScreen已经有了一个缩放方法,但是自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;
}
答案 1 :(得分:4)
关于你关于决议的第二个问题,也许这会对你有所帮助 从iOS4及更高版本开始,有像素,点和比例因子。
[[UIScreen mainScreen] bounds]
bounds will return points(480x320)不是像素(960x640) iOS4 Application Programming Guide(点数与像素数):
在iOS 4及更高版本的UIScreen中, UIView,UIImage和CALayer类 揭示一个告诉你的比例因子 点与之间的关系 该特定对象的像素。 在iOS 4之前,这个比例因子是 假设是1.0,但在iOS 4和 以后它可能是1.0或2.0, 取决于分辨率 底层设备。在将来, 其他比例因子也可能 可能的。