2016-04-13 37 views

Odpowiedz

-1

Od iOS 8.0 Możesz wykryć zmianę orientacji za pomocą poniższej metody.

w Objective-C

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 

w szybkim

func viewWillTransitionToSize(_ size: CGSize, 
    withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) 

od wielkości można się dowiedzieć.

+0

Ta metoda nie jest wywoływana. Mam kontroler podzielonego widoku – Swayambhu

+0

** UISplitViewContoller ** jest również podklasą ** UIVIewController **. Powinien zostać wywołany. Jeszcze jeden ważny punkt sprawdza, czy wywołać tę metodę z super czy nie. ** viewWillTransitionToSize: withTransitionCoordinator: ** wydaje się działać tylko wtedy, gdy interfejs rzeczywiście zmieni rozmiar, co oznacza, że ​​obróciliśmy o 90 stopni. Jeśli masz maskę na swoim układzie, która pozwala tylko na krajobraz, gdy obraca się o 180 stopni, rozmiar interfejsu się nie zmienia, więc ta metoda nie wydaje się być wywołana. – commando24

16

Aktualizacja do Swift 4: Dodaj poniżej kod w ViewDidLoad:

NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: Notification.Name("UIDeviceOrientationDidChangeNotification"), object: nil) 

Następnie należy utworzyć jedną funkcję jak poniżej

@objc func orientationChanged() { 

    if(UIDeviceOrientationIsLandscape(UIDevice.current.orientation)){ 

     print("landscape") 
    } 

    if(UIDeviceOrientationIsPortrait(UIDevice.current.orientation)){ 

     print("Portrait") 
    } 

} 

nadzieję, że to pomaga :)

+0

UIDeviceOrientation! = UIInterfaceOrientation – nnrales