模拟器iPhone Retina有错误的屏幕分辨率

iPa*_*011 3 screen universal retina-display ios-simulator

我正在尝试编写通用应用程序.对于不同的屏幕分辨率,显示应略有不同.但是,当我这样编码:

- (void)viewDidLoad {
    SCREEN_WIDTH=[[UIScreen mainScreen] applicationFrame].size.width;
    SCREEN_HEIGHT=[[UIScreen mainScreen] applicationFrame].size.height;
    NSLog(@"w:%f h:%f",SCREEN_WIDTH,SCREEN_HEIGHT);
...
}
Run Code Online (Sandbox Code Playgroud)

我得到输出:w:320.000000 h:480.000000即使模拟器设置为
硬件 - >设备 - > iPhone(视网膜)
此外,具有此分辨率的图像在模拟器中显示为全屏图像.
我明白我应该得到w:640.000000 h:960.000000.
对其他人来说这样吗?任何想法为什么/如何解决?请参阅相关主题:此处

Jon*_*pan 5

UIScreen将始终将Retina显示设备的分辨率报告为非Retina显示设备的分辨率.这允许旧代码在这样的屏幕上透明地运行.但是,UIScreen公开了一个scale属性,当与屏幕边界结合使用时,可以使用该属性来确定设备的物理像素分辨率:

CGSize PhysicalPixelSizeOfScreen(UIScreen *s) {
    CGSize result = s.bounds.size;

    if ([s respondsToSelector: @selector(scale)]) {
        CGFloat scale = s.scale;
        result = CGSizeMake(result.width * scale, result.height * scale);
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

iPhone 4上的结果值是{ 640.0, 960.0 }.

  • 嗨乔纳森,对不起,但我发现你的"谷歌是你的朋友"评论很烦人.我已经阅读了您发送的google页面中的前3个链接,但没有发现任何有用的内容.是的,苹果在他们的网站上有很多信息 - 但是它是否真的适用于我的问题呢? (3认同)