2012-03-26 59 views
3

我正在开发使用Xcode 4.2 [iOS SDK 5.0]的iPad3(视网膜显示器)应用程序。我正在使用以下代码段来检测视网膜(高分辨率)显示。iPad3高分辨率视网膜显示问题

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
{ 
NSLog(@"scale = %f",[[UIScreen mainScreen] scale]); 
if ([[UIScreen mainScreen] scale] > 1.0) { 
    NSLog(@"Retina Display iPad3"); 
} 
else  
{ 
    NSLog(@"Non Retina Display iPad 1/2"); 
} 
} 

当我安装iPad3的设备上的应用程序是显示输出:

规模= 1.00000;

非视网膜显示屏iPad 1/2。

以上代码未检测到视网膜显示。

我试过所有与谷歌视网膜显示检测有关的代码,但所有代码都未能检测到视网膜显示。 有没有什么方法可以检测iPad 3的视网膜显示。

预先感谢您。

+0

为什么你需要检测视网膜显示? – 2012-03-26 10:47:16

回答

9

为了让您的应用程序支持新的iPad视网膜显示屏,您需要针对5.1 SDK(我认为这意味着您需要使用XCode 4.3)进行开发和构建。

+0

这绝对是正确的答案。 – Sulthan 2012-03-26 11:47:26

+0

嘿,你会得到答案的答案。但是有可能在5.0 sdk(XCode 4.2)中检测到ipad 3视网膜显示器? – user392406 2012-03-27 04:53:10

+0

我不确定,因为我还没有尝试,但我怀疑它可能不是。 – 2012-03-27 08:23:25

-1

尝试更换:

if ([[UIScreen mainScreen] scale] > 1.0) { 

通过

if ([[UIScreen mainScreen] scale] >= 1.0) { 

(我会在这里失去了点,但如果iPad3的拥有1.0规模,那么 '> 1.0' 是不正确的)

+0

iPad(第三代)的比例因子为2.0,iPad 1和iPad 2(以及iPhone,iPhone 3G和iPhone 3G S)的比例因子为1.0。 – hypercrypt 2012-03-27 08:08:56

8
+ (BOOL)isRetina 
{ 
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) { 
     return YES; 
    } 
    return NO; 
} 

我已经在iPad3上测试过了,这个方法返回YES

+0

完美答案..谢谢 – 2012-04-26 14:55:28

+1

这对于使用==运算符的浮点常量来说并不完美。更安全使用> 1.0 – Denis 2012-11-06 07:34:27

相关问题