2012-03-26 62 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

相關問題