2014-09-28 10 views
14

Próbuję zbudować wersję mojej aplikacji specjalnie dla iPhone 6 i 6 Plus, podczas gdy ja nie mam żadnego sprzętu, muszę przetestować na symulatorze! ale wygląda na to, że symulator ma dziwny błąd! Pierwszy i najbardziej otrzymuję rozdzielczości ekranu i łuski, przez ten kod:Masz problem z wykryciem iPhone'a 6/Plus na symulatorze

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

więc o to w jaki sposób wykryć iPhone 6 i 6Plus (tryb portretowy):

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

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

problem jest! kiedy obiad moja aplikacja na iPhone6 ​​/ Plus symulator, kompilator daje mi informacje Sceen wyświetlacza 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 

Ale to działa dobrze na nowym projekcie (nie mogę utworzyć nowy projekt i zacząć od nowa!) I cleaned code, delete build folder, change project's name, i zresetować Simulator contents setting, ale nadal daje mi informacje o wyświetlaczu 4 "! .

Sprawdziłem to Q/A, ale odpowiedzi wymagają prawdziwego urządzenia!

+0

Twój projekt został utworzony w Xcode 5, a otwarcie w 6 ... prawda? –

+0

@FahimParkar Tak, zrobiłem! –

+2

Czy próbowałeś dodać ekran Uruchomienie? Nawet MainStoryboard jest w porządku. – Phillip

Odpowiedz

21

Głównym powodem, że w obliczu tego problemu było zbudować mój wniosek z Xcode 5 i otwórz go Xcode 6

rozwiązanie:

Dodaj Uruchom zdjęcie Retina HD 5.5 i 4.7:

enter image description here

Teraz możesz wykryć iPhone'a 6/Plus na symulatorze bez prawdziwego urządzenia:

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

Brat sam się zdarzył, gdy pojawił się iPhone 5 ... to było jedyne rozwiązanie ... ALE zapomniałem: D :) –

+0

Musisz dodać obrazy z PRAWDZIWYMI rozmiarami lub musisz użyć ekranu Uruchomienia http: // stackoverflow. com/questions/25754942/how-to-enable-native-resolution-for-apps-on-iphone-6-and-6-plus – onmyway133

2

W przypadku, gdy musisz wykryć iPhone'a 6/6Plus w krajobrazie, użyj tego.

#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) 
Powiązane problemy