2012-04-26 15 views
5

Potrzebuję uzyskać orientację urządzenia z ViewController. nie mogę oprzeć na:Jak uzyskać orientację urządzenia za pomocą odwołania UIView?

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

ponieważ czasami zwraca orientację nieznany (na przykład, gdy urządzenie leży na stole).

Po prostu muszę wiedzieć, , w jakiej orientacji jest moje bieżące UIView wyświetlane (czy jest to krajobraz w lewo, czy w prawo krajobraz). Nie potrzebuję aktualizować tej wartości, gdy orientacja się zmienia, po prostu chcę ją poznać, kiedy o to poproszę. Tylko niektóre odniesienia view.orientation;). Czy jest coś, co mogłoby mi pomóc? Czytałem dokumentację UIView, znalazłem pewne odniesienie do UIWindow, ale nic, co mogłoby mi pomóc.

Odpowiedz

13

Można również uzyskać orientację urządzenia z UIApplication, czy próbowałeś za pomocą

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
+1

To jest dokładnie to, czym byłem oking dla. Teraz mogę uzyskać orientację komponentów UIKit i używać go. Wielkie dzięki! – thelion

-1

Poniżej znajduje się przykładowy kod, aby zrobić to samo. Istnieje zmienna o nazwie deviceOrientation, która odpowiada na bieżącą orientację urządzenia, gdy tylko zostanie zapytana.

UIDeviceOrientation deviceOrientation; 

- (void)viewWillAppear:(BOOL)animated 
{ 
    deviceOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation]; 
    [self willAnimateRotationToInterfaceOrientation:deviceOrientation duration:0.5]; 
} 

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration 
{ 
    deviceOrientation = (UIDeviceOrientation)interfaceOrientation; 
    if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) 
    { 
     NSLog(@"Landscape"); 
    } 
    else 
    { 
     NSLog(@"Portrait"); 
    } 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return TRUE; 
} 
4

UIViewController ma właściwość

UIInterfaceOrientation interfaceOrientation; 

Więc w UIViewController, można uzyskać dostęp do bieżącej orientacji urządzenia w dowolnym momencie poprzez

UIInterfaceOrientation myCurrentOrientation = self.interfaceOrientation; 
+0

Przestarzałe od iOS 8.0 –

0

Swift Version

let currentOrientation:UIInterfaceOrientation = UIApplication.sharedApplication().statusBarOrientation 


    if currentOrientation.isPortrait { 

     print("PORTRAIT") 

    } else if currentOrientation.isLandscape { 

     print("LANDSCAPE") 

    } 
Powiązane problemy