我正在尝试编写一个通用应用程序。对于不同的屏幕分辨率,显示应该略有不同。但是当我这样编码时:
- (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(视网膜)
此外,具有此分辨率的图像在模拟器中显示为全屏图像。
我明白我应该得到w:640.000000 h:960.000000
.
对于其他人来说也是这样吗?以及为什么/如何解决的任何想法?
请参阅相关主题:here
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;
}
iPhone 4 上的结果值为{ 640.0, 960.0 }
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)