UIScreen返回错误的值?

时间:2014-08-04 13:10:08

标签: objective-c

NSLog(@"-- %f %f",[UIScreen mainScreen].bounds.size.width,[UIScreen    mainScreen].bounds.size.height);

分别是:-- 320.000000 568.000000-- 320.000000 480.000000分别为iPhone 5 /4

该应用包含所有需要的Default张图片。它的普遍性。 (Default.png, Default@2x.png, and Default-568h@2x.png480x320, 960x640, and 1136x640

为什么我一直得到这个错误的价值观? (我已经清理过,重启)。

3 个答案:

答案 0 :(得分:0)

我想,您需要检查的是视网膜显示

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
    && [[UIScreen mainScreen] scale] == 2.0) 
{
    // Retina
     NSLog(@"-- %f %f",2*[UIScreen mainScreen].bounds.size.width,2*[UIScreen    mainScreen].bounds.size.height);
}
else 
{
    // Not Retina
    NSLog(@"-- %f %f",[UIScreen mainScreen].bounds.size.width,[UIScreen    mainScreen].bounds.size.height);
}

答案 1 :(得分:0)

这些是正确的值。

iOS适用于点 - 而不是像素。这是为了更容易使用不同比例显示的尺寸和位置。

例如:1x规模的iPhone 3Gs宽度为320点(恰好与显示器物理上的320像素一致),然后iPhone 4配备了视网膜显示器(2倍规模),其宽度为仍然是320点,但计算出640个物理像素。屏幕呈现的尺寸是3G的两倍,但是它适合于相同的物理空间。由于像素密度增加,这可以提高显示质量。

因此,无论何时您正在使用尺寸和定位,请仔细考虑并记住将要显示的显示比例。使用图像时,比例非常重要,因此请务必了解何时使用@ 2x图像进行视网膜显示。

答案 2 :(得分:-1)

您可以使用以下代码检查不同设备的窗口高度。只需使用以下代码。

#define isiPhone5  ([[UIScreen mainScreen] bounds].size.height == 568)?YES:NO
 if (isiPhone5) { 
//This is iPhone5, 5S

} else {
//This is iPhone4, 4S

}

要检查它是iPad还是iPhone,请看

#define IS_IPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)

我希望这有助于了解你想要的东西。