5

我对如何使用模拟器构建需要支持 iphone 4 的新更高分辨率的应用程序感到有点困惑。

除了选择 iphone4 模拟器来运行应用程序时,[[UIScreen mainScreen] bounds]我会返回 960x640,但它仍然会给我旧的分辨率 (480x320) 吗?

尽管 iphone4 模拟器在我的屏幕上显示为一个巨大的手机,但它似乎仍然只有 480x320 像素。例如,当我想在第 700 行显示某些内容时,它会从屏幕上掉下来吗?

感谢您对此的任何意见。

4

2 回答 2

8

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;
}
于 2010-07-18T16:37:29.723 回答
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,具体取决于底层设备的分辨率。将来,其他比例因子也可能是可能的。

于 2010-07-18T19:03:24.767 回答