Ho un controller di visualizzazione diviso e vi presento un popover al suo interno. Ora, quando l'orientamento del dispositivo cambia da orizzontale a verticale, devo eseguire un pezzo di codice & se si passa da verticale a orizzontale devo eseguire un altro pezzo di codice. Come ottenere ciò in Swift.Come controllare il cambio di orientamento del dispositivo Da verticale a orizzontale e Vice-Versa in iPad
5
A
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.
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
Questo metodo non viene chiamato. Ho un controller di visualizzazione split – Swayambhu
** 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