2012-11-05 3 views
8

Wie kann ich prüfen, ob eine Anwendung auf dem iPhone 5 läuft oder nicht und dann etwas unternehmen?Wie überprüft man das Gerät ist iPhone 5?

+1

Sind Sie wirklich für ein iPhone Überprüfung 5 oder haben Sie für die 4" Bildschirm zur Zeit sowohl vom iPhone 5 und 5. GEN iPod touch verwendet überprüfen müssen? Und was tun Sie haben vor, mit diesem Wissen zu tun? Die Antworten werden helfen, die beste Lösung zu führen. – rmaddy

+0

@ChrisLatta - Ich suchte und ich fand nicht so leid, aber das ist dann nicht doppelt. – CroiOS

+1

@CroiOS warum ist es kein Duplikat? – hfossli

Antwort

11

Sie sind wahrscheinlich besorgt über die Fenstergröße, nicht die Marke/Modell, dies zu tun:

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

fehlt Info @property (nonatomic, readonly) CGRect bounds; // Grenzen des gesamten Bildschirms in Punkten @property (nonatomic, readonly) CGRect applicationFrame; // Frame des Anwendungsbildschirms a rea in Punkten (d.h. gesamter Bildschirm minus Statusleiste, wenn sichtbar) – Underdog

+4

Dies ist nicht immer der Fall, wenn in Ihrer Anwendungsstatusleiste die Höhe 548 angezeigt wird. Um dies immer gleich 568 zu verwenden, verwenden Sie [[UIScreen mainScreen] Grenzen]; stattdessen. – Underdog

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

dann im Code:

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

Wie in der anderen Diskussion ist es wirklich nicht notwendig, mit Epsilon zu überprüfen – hfossli

3

Sie können es tun mit Überprüfung der Bildschirmauflösung oder Sie können es tun mit:

#import "sys/utsname.h" 

, die Sie für jedes Gerät identifizieren. Nur sehen meine Antwort hier: recognize device

-10

Sie können Ihr Gerät iOS Version überprüfen, ob 6.0 ist dann sein ein iPhone 5 .....

Hier ist der Code ..

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

es ist nicht wahr, auch iPhone 4s oder iPhone 4 oder iphone 3gs haben iOS 6.0 ... – Piero

+1

ja, und viele iPads laufen auf iOS6, und sie sind auch nicht iPhone5-Geräte in einem Fall der universellen Anwendung. – holex

+3

Ich hoffe, Ihr Tag Job! = "IOS-Entwicklung" – scaba

0

Wir können direkt setze diese Methode in konstanter Datei und kann unter Verwendung eines beliebigen, wo definiert

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

Oder verwenden kann

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

Wir können auch IOS überprüfen über unter

#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

Mit Bildschirm ist in Ordnung.

#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) 

Keine epsilon Prüfung erforderlich

Verwandte Themen