2012-11-05 66 views
8

如何檢查運行在iPhone 5上的應用程序,然後執行某些操作?如何檢查設備是iPhone 5?

+1

難道你真的檢查的iPhone 5或你需要檢查當前使用的無論是iPhone 5和第5代iPod touch上的4" 畫面?又有哪些呢 – rmaddy

+0

@ChrisLatta - 我搜索了一下,但是我沒有找到那麼抱歉,但是沒有重複。 – CroiOS

+1

@CroiOS爲什麼它不是重複的? – hfossli

回答

11

你可能關心的窗口大小,而不是品牌/型號,這將做到:

CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; 
if (screenRect.size.height == 568) 
{ 
// this is an iPhone 5+ 
} 
+0

錯過信息這裏。@property(nonatomic,只讀)CGRect bounds; //界面中整個屏幕的邊界 @property(非原子,只讀)CGRect applicationFrame; //框架的應用程序屏幕a點(即整個屏幕減去狀態欄,如果可見) – Underdog

+4

這並不總是如此,如果在你的應用程序狀態欄是可見的,它的高度是548。要使這總是等於568使用[[UIScreen mainScreen]界限];代替。 – Underdog

18
#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

然後在代碼:

if (IS_IPHONE_5) { 
    //is iphone 5 
} 
+0

正如在其他討論中,真的沒有必要檢查與epsilon – hfossli

3

你可以這樣做與檢查屏幕分辨率或您可以使用它:

#import "sys/utsname.h" 

它給你每個設備的標識符。只是看到我的答案在這裏:recognize device

-10

您可以檢查設備的iOS版本,如果是6.0則其在iPhone 5 .....

下面的代碼..

double osVersion = [[[UIDevice currentDevice] systemVersion] doubleValue]; 
NSLog(@"OSVersion: %f", osVersion); 
if (osVersion == 6.0) 
{ 
    //Paste your code here..... 
} 
+2

這是不正確的,也iPhone 4s或iPhone 4或iPhone 3GS有iOS 6.0 ... – Piero

+1

是的,許多iPad運行在iOS6上,他們也不是iPhone5設備在普遍應用的情況下。 – holex

+3

我希望你的日常工作!=「iOS開發」 – scaba

0

我們可以直接把在不斷的文件這種方法,並且可以使用使用任何地方定義

#define ISIPHONE5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 
#define HEIGHT (ISIPHONE5 ? 60:145) 

或者可以使用

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES) 

我們也可以通過下面

#define IOS_OLDER_THAN_6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0) 
#define IOS_NEWER_OR_EQUAL_TO_6 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0) 
3

使用畫面精美檢查IOS。

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0f) 

沒有小量檢查需要