2012-11-05 18 views
8

Jak mogę sprawdzić, czy aplikacja działa na iPhone 5, czy nie, a następnie zrobić coś?Jak sprawdzić urządzenie to iPhone 5?

+1

Czy naprawdę sprawdzanie iPhone 5 czy trzeba sprawdzić na ekranie 4" aktualnie używany zarówno przez iPhone 5 i 5. generacji iPod touch? I co zrobić Planujesz zrobić z tą wiedzą? Odpowiedzi pomogą w wyborze najlepszego rozwiązania – rmaddy

+0

@ChrisLatta - Przeszukałem i nie znalazłem tak bardzo przykro, ale to nie jest duplikowane, – CroiOS

+1

@CroiOS dlaczego nie jest duplikatem? – hfossli

Odpowiedz

11

najprawdopodobniej dotyczy rozmiaru okna, a nie marka/model, będzie to zrobić:

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

brakujące informacje tutaj: @property (nieatomowe, tylko do odczytu) Granice CGRect, // Granice całego ekranu w punktach @property (nonatomic, readonly) CGRect applicationFrame; // Ramka ekranu aplikacji a rea w punktach (tj. cały ekran minus pasek stanu, jeśli jest widoczny) – Underdog

+4

To nie zawsze jest prawdą, jeśli na pasku stanu aplikacji jest widoczny jego wzrost to 548. Aby mieć to zawsze równe 568 użyj [[UIScreen mainScreen] granic]; zamiast. – Underdog

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

następnie w kodzie:

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

Podobnie jak w przypadku innych dyskusji, naprawdę nie jest konieczne sprawdzanie za pomocą epsilon – hfossli

3

Można to zrobić z sprawdzaniem rozdzielczości ekranu lub możesz to zrobić, używając:

#import "sys/utsname.h" 

, które dają identyfikator dla każdego urządzenia. Wystarczy zobaczyć moją odpowiedź tutaj: recognize device

-10

można sprawdzić wersję urządzenia iOS 6.0 jeśli jest to jest to iPhone 5 .....

Oto kod ..

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

, to nie jest prawda, także iPhone 4s lub iPhone 4 lub iphone 3gs mają ios 6.0 ... – Piero

+1

tak, a wiele iPadów działa na iOS6, a także nie są Urządzenia iPhone5 w przypadku uniwersalnej aplikacji. – holex

+3

Mam nadzieję, że Twój dzień pracy! = "IOS Development" – scaba

0

Możemy bezpośrednio umieścić tę metodę w stałym pliku i można używać w każdym miejscu za pomocą określić

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

można użyć

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

Możemy również sprawdzić IOS poprzez poniżej

#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

Korzystanie ekran jest w porządku.

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

No check epsilon jest wymagane

Powiązane problemy