2016-04-13 37 views

risposta

-1

da iOS aiuta 8.0 È possibile rilevare la modifica dell'orientamento utilizzando il metodo seguente.

in Objective-C

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

in rapida

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

dalla dimensione si può scoprire.

+0

Questo metodo non viene chiamato. Ho un controller di visualizzazione split – Swayambhu

+0

** UISplitViewContoller ** è anche una sottoclasse di ** UIVIewController **. Dovrebbe essere chiamato. Un altro punto importante controlla se si chiama questo metodo con super o no. ** viewWillTransitionToSize: withTransitionCoordinator: ** sembra funzionare solo se l'interfaccia sta per cambiare le dimensioni, il che significa che abbiamo ruotato di 90 gradi. Se si dispone di una maschera sul layout che consente solo il paesaggio, quando la rotazione di 180 gradi, la dimensione dell'interfaccia non cambia, quindi questo metodo non sembra essere chiamato. – commando24

16

Aggiornato a Swift 4: Aggiungi sottostante Codice in ViewDidLoad:

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

Poi, creare una funzione come qui di seguito

@objc func orientationChanged() { 

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

     print("landscape") 
    } 

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

     print("Portrait") 
    } 

} 

auguriamo che questo voi :)

+0

UIDeviceOrientation! = UIInterfaceOrientation – nnrales