Проблема с обнаружением iPhone 6/Plus на симуляторе

Я пытаюсь создать версию своего приложения специально для iPhone 6 и 6 Plus, в то время как у меня нет никакого оборудования, мне нужно протестировать на симуляторе! но, похоже, у симулятора есть странная ошибка! сначала и для большинства я получаю разрешения экрана и шкалы, по этому коду:

    UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f",
      NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);

так вот как обнаруживают iPhone 6 и 6Plus (портретный режим):

#define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 667)

#define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 736)

проблема есть! когда я обедаю свое приложение на симуляторе iPhone6 ​​/Plus, компилятор дает мне информацию о iPhone 4 "дисплея:

    2014-09-28 12:32:08.153 WOD[2924:42290] 
Screen bounds: {{0, 0}, {320, 568}}, Screen resolution: <UIScreen: 0x7fa15be0f9b0; bounds = {{0, 0}, {320, 568}}; mode = <UIScreenMode: 0x7fa15bd0d4a0; 
size = 640.000000 x 1136.000000>>, scale: 2.000000, nativeScale: 2.000000

Но он отлично работает в новом проекте! (Я не могу создать новый проект и начать заново!). I cleaned code, delete build folder, change project name и reset Simulator contents setting, но все же дает мне информацию о 4 "дисплее!.

Я проверил этот Q/A, но для ответа требуется реальное устройство!

Ответы

Ответ 1

Основная причина, по которой я столкнулся с этой проблемой, заключалась в том, что я создаю свое приложение с Xcode 5 и открываю его с помощью Xcode 6

Решение:

Добавить изображение запуска для Retina HD 5.5 и 4.7:

enter image description here

Теперь вы можете обнаружить iPhone 6/Plus на симуляторе без реального устройства:

#define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 667)
 #define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 736)

Ответ 2

На всякий случай вам нужно обнаружить iPhone 6/6Plus в ландшафте, используйте это.

 #define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 667)
 #define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 736)