ios-simulator - 模拟器 iPhone Retina 的屏幕分辨率错误

标签 ios-simulator screen retina-display universal

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

- (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);
...
}

即使模拟器设置为
,我也会得到输出:w:320.000000 h:480.000000 硬件->设备->iPhone (Retina)
此外,具有此分辨率的图像在模拟器中显示为全屏图像。
我知道我应该得到 w:640.000000 h:960.000000
其他人也这样吗?以及为什么/如何解决的任何想法? 请参阅相关主题:here

最佳答案

UIScreen 将始终将 Retina Display 设备的分辨率报告为非 Retina Display 设备的分辨率。这允许旧代码在此类屏幕上透明地运行。但是,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;
}

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

关于ios-simulator - 模拟器 iPhone Retina 的屏幕分辨率错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4772647/

相关文章:

iphone - Xcode 中特定文件的特定编译器标志

ios - 当我添加到基本 SDK 中时,在 Xcode 8 中找不到 SDK,它会显示此信息

android - 如何修复 Android 手机 webview 的旋转?

java - 视网膜兼容 JLabel 图像

css - 视网膜屏幕上的 Bootstrap 4 网格系统

css - 一个 img 中的简单图像和视网膜图像

xcode - 在iOS模拟器上运行React Native应用程序时,诊断过程的CPU负载很高

objective-c - 具有 iPad 视网膜显示屏的模拟器

ios - 如何以编程方式录制 IOS 屏幕

android - HTML5 - 安卓屏幕尺寸