Проблема с обнаружением 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)