2011-11-01 11 views

Odpowiedz

111

self.interfaceOrientation zwraca UIInterfaceOrientation, aktualna orientacja interfejsu. Jest to właściwość w UIViewController, dostęp do niej można uzyskać tylko w klasach UIViewController.

[[UIApplication sharedApplication] statusBarOrientation] zwraca UIInterfaceOrientation, aktualna orientacja paska stanu aplikacji. Możesz uzyskać dostęp do tej właściwości w dowolnym punkcie aplikacji. Moje doświadczenie pokazuje, że jest to skuteczniejszy sposób na uzyskanie prawdziwej orientacji interfejsu.

[[UIDevice currentDevice] orientation] zwraca UIDeviceOrientation, orientacja urządzenia. Możesz uzyskać dostęp do tej właściwości w dowolnym punkcie aplikacji. Ale zauważ, że UIDeviceOrientation nie zawsze jest UInterfaceOrientation. Na przykład, gdy Twoje urządzenie znajduje się na zwykłym stole, możesz otrzymać nieoczekiwaną wartość.

+0

Dzięki, teraz jest dla mnie jasne! –

+1

jeszcze jedna odpowiedź dotycząca orientacji interfejsu - http://stackoverflow.com/a/3897243/194544 – beryllium

+0

+1, bardzo dobre wyjaśnienie :)) – mAc

23

[[UIApplication sharedApplication] statusBarOrientation] - zawsze jest to jedna z czterech wartości: portret, krajobraz po lewej, prawo krajobraz i portret do góry nogami.

[[UIDevice currentDevice] orientation] - ten jest równy standartowi czterech wartości, a także: nieznany, odkryte lub zakryte.

[[UIApplication sharedApplication] statusBarOrientation] - jest bardziej preferowanym sposobem uzyskania orientacji interfejsu.

+0

Ponadto '[[UIDevice currentDevice] orientacja] '" ... zawsze zwraca 0, o ile powiadomienia orientacji nie zostały włączone przez wywołanie metody beginGeneratingDeviceOrientationNotifications. " (Docs.) – Olie

+8

12 migren i 5 owrzodzeń później, mogę potwierdzić, że '[[UIApplication sharedApplication] statusBarOrientation]' jest bardziej niezawodnym i prostym sposobem wykrywania i zarządzania zmianami orientacji. –

1

wszystkich kontrolerów widoku mają tę funkcję

override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) { 
      //fromInterfaceOrientation.isLandscape 
    } 

lub można użytkownik orientacja pasek stanu

if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait { 
     // 
    } 

Pracuje w iOS 9 :)

Powiązane problemy