2015-04-16 21 views
6

pracuję nad projektem uniwersalnego z tymi wymaganiami:odmiennej orientacji Urządzenie według urządzenia (iPhone lub iPad)

  • iPhone, chcę tylko orientację pionową.
  • Dla iPada, tylko krajobrazy.

Jak to zrobić dla iOS 8 (Swift)?

+2

pan próbował info.plist w Xcode? – ScarletMerlin

+0

Witam @ScarletMerlin. Dziękuję za radę. Nie wiem, jak przegapiłem klucz "Obsługiwane orientacje interfejsu (iPad)". Korzystanie z tego klucza działa zgodnie z wymaganiami. Nie krępuj się, aby utworzyć odpowiedź, więc mogę przegłosować. Zdrowie przyjacielu. – insetoman

+1

Nie martw się Nie potrzebuję punktów z zatwierdzonej odpowiedzi. Plik info.plist określa sposób obsługi ustawień globalnych. możesz również zrobić to na kodzie, ale rzadko jest to zalecane. – ScarletMerlin

Odpowiedz

23

Idąc za radą @ScarletMerlin, zmiana kluczy w info.plist jest, moim zdaniem, najlepszym rozwiązaniem dla wymagań, które muszę spełnić (stały typ orientacji dla każdego rodzaju urządzenia).

Oto ekran drukowania z ustawień, których używam. Może to może pomóc innym programistom z podobnymi wątpliwościami.

Settings in info.plist file

Kod źródłowy relavent wygląda następująco:

<key>UISupportedInterfaceOrientations</key> 
<array> 
    <string>UIInterfaceOrientationPortrait</string> 
</array> 
<key>UISupportedInterfaceOrientations~ipad</key> 
<array> 
    <string>UIInterfaceOrientationLandscapeLeft</string> 
    <string>UIInterfaceOrientationLandscapeRight</string> 
</array> 
0

Moja sugestia to sprawdzenie sprzętu, na którym działa aplikacja. Aby to zrobić, użyj tego wiersza kodu.

if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) 

Potem, kiedy już wykryty sprzęt, zablokować orientację przestrzenną za pomocą shouldAutorotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation 
{ 
    return UIInterfaceOrientationIsLandscape(orientation); 
} 

Tylko jako przykład, można zrobić to

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation 
    { 
     if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) 
      return UIInterfaceOrientationIsLandscape(orientation); // If iPad 
     else 
      return UIInterfaceOrientationIsPortrait(orientation); // Else, it is an iPhone 
    }