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.png
,480x320, 960x640, and 1136x640
)
为什么我一直得到这个错误的价值观? (我已经清理过,重启)。
答案 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)
我希望这有助于了解你想要的东西。