iPhone模拟器中的视网膜显示屏

5
我有些困惑如何使用模拟器来构建需要支持iPhone 4高分辨率的应用程序。我希望在选择iPhone 4模拟器运行应用程序时,[[UIScreen mainScreen] bounds]能给我返回960x640像素,但实际上它仍然只提供旧的分辨率(480x320)?
尽管iPhone 4模拟器在我的屏幕上显示为一个巨大的手机,但它似乎仍然只包含480x320像素。例如,当我想在第700行显示某个内容时,它会直接跑出屏幕!
非常感谢您对此的任何帮助。
2个回答

8

UIScreen新增了一个scale方法。将bounds.size乘以比例尺以获取像素。您可以将未缩放的值视为点或虚拟像素。

请注意,UIScreen自至少3.2版本以来就有一个比例尺方法,但只在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;
}

谢谢你的回答。你有没有时间回答我的第二个问题呢? - Oysio

4

关于你的第二个问题,分辨率,也许这会对你有所帮助。
从iOS4及更高版本开始有像素、点和缩放因子。

[[UIScreen mainScreen] bounds] 

bounds属性返回的是点数(480x320),而不是像素(960x640)。
iOS4应用程序编程指南(点数与像素):

在iOS 4及以上版本中,UIScreen、UIView、UIImage和CALayer类都提供了一个比例因子,用于表示该对象的点数和像素之间的关系。在iOS 4之前,默认的比例因子为1.0,但在iOS 4及以后的版本中,它可以是1.0或2.0,具体取决于底层设备的分辨率。未来可能还会有其他比例因子。


我在模拟器中一直得到比例尺为0的值.. 有任何评论吗? - Suresh Varma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接