我正在尝试编写一个通用应用程序。对于不同的屏幕分辨率,显示应该略有不同。但是当我这样编码时:
- (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/