2013-09-21 7 views
2

У меня есть iPhone приложение, в котором я был до сих пор успешно проверен iphone 5 с следующим кодом (в моем Prefix.pch файла):Как проверить, есть ли iPhone 5 в iOS 7?

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

Теперь, когда я бег на моем iPhone 5, я получаю эту высоту в log: 480 ([[UIScreen mainScreen] bounds] .size.height)

Я обновил свой iPhone на iOS 7. Есть ли другой способ проверить, есть ли iPhone 5 (или высота экрана)?

UPDATE: У меня есть на моем MAC OSX 10.8.5

UPDATE 2: Я понял это, что есть какая-то ошибка в этом проекте, потому что, когда я создаю новый проект все-примеры кода работы ,

+4

Какое это имеет значение, если вы находитесь на iPhone 5 против iPhone 4s? Вы должны проверять * возможность *, которую хотите использовать, а не на каком устройстве вы находитесь. –

+0

@DaveDeLong Это важно, если у iPhone 4 недостаточно сока, чтобы отобразить все эти красивые округлые углы. Таким образом, во время выполнения вы проверяете устройство и соответственно отображаете представление. – Byte

ответ

3

Я только что протестировал этот код и проверяет его на наличие iPhone 5 & 4 и iOS 7 Просто куча вялого вложенного выражения If!

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){ 
     if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) { 
      CGSize result = [[UIScreen mainScreen] bounds].size; 
      CGFloat scale = [UIScreen mainScreen].scale; 
      result = CGSizeMake(result.width * scale, result.height * scale); 

      if(result.height == 960){ 
       NSLog(@"iphone 4, 4s retina resolution"); 

       //CODE IF IPHONE 4 

       if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { 
        //Code if iPhone 4 or 4s and iOS 7 
        NSLog(@"iPhone 4 iOS 7"); 
       } 
      } 
      if(result.height == 1136){ 
       NSLog(@"iphone 5 resolution"); 

       //CODE IF iPHONE 5 

       if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { 
        //Code if iPhone 5 or 5s and iOS 7 
        NSLog(@"iPhone 5 iOS 7"); 
       } 
      } 
     } 
    } 
+0

Я получаю «iPhone 4 iOS 7». Это не нормально. – CroiOS

+0

@CroiOS, возможно, у вас нет iPhone 5 :) – TonyMkenu

+0

Lol. У меня iPhone 5 :) – CroiOS

2

Используйте это:

bool isFourInches = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136)); 

isFourInches будет "ДА", если устройство имеет дисплей четыре дюйма, это может быть iPhone 5, 5s или 5с ...

+0

Я не получаю, что-то не в порядке. – CroiOS

+0

Ваше приложение работает в горизонтальной ориентации? –

+0

Мое приложение работает на портрете – CroiOS

0

Try условие ниже ...

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0){ 

    NSLog(@"iOS 7");   
} 
+0

#define IS_OS_7_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue]> = 7.0) –

Смежные вопросы