EDITED: Frédéric Dal Bo wollte die aktuellen Geräte Orientierung in die getOrientation
Methode zu übergeben zu können, wie er kann nicht c alle UIDevice.current
innerhalb der Erweiterung, die er verwendete. Hoffentlich wird dies funktionieren, anstatt die UIDeviceOrientation
innerhalb des getOrientation
Erfassungsverfahren UIDevice.current
verwenden, können Sie die bestimmen, aus der Notification
, und dann, wenn Sie die Meldung verarbeiten, übergeben entlang der Informationen:
func getOrientation(orientation: UIDeviceOrientation) {
switch orientation {
case .portrait:
print("Portrait")
case .landscapeLeft:
print("Lanscape Left")
case .landscapeRight:
print("Landscape Right")
case .portraitUpsideDown:
print("Portrait Upside Down")
case .faceUp:
print("Face up")
case .faceDown:
print("Face Down")
case .unknown:
print("Unknown")
}
}
Wenn Sie die Klasse zu initialisieren oder in viewDidLoad(_:)
, wenn Sie wollen, um die Änderung in einem ViewController
zu handhaben:
NotificationCenter.default.addObserver(self, selector: #selector(deviceRotated(_:)), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
func deviceRotated(_ notification: Notification) {
let device = notification.object as! UIDevice
let orientation = device.orientation
getOrientation(orientation: orientation)
}
dann, wenn das Gerät dreht, die deviceRotated(orientation:)
genannt wird, und es wird die aktuellen Geräte Orientierung passieren in die Methode. Sie können dann die Orientierungsänderung entsprechend bearbeiten.
Vielen Dank Pierce, aber ich bemerkte, dass beide Methoden, die Sie vorgeschlagen haben, in einer heutigen Erweiterung nicht funktionieren. Deshalb habe ich UIScreen.main verwendet. Vielleicht irre ich mich –
@ Frédéric Dal Bo - Ich werde meine Antwort aktualisieren, um hoffentlich für Ihre aktuellen Umstände zu arbeiten. – Pierce
@ Frédéric Dal Bo - Bitte sehen Sie meine aktualisierte Antwort, es sollte für Ihre Bedürfnisse arbeiten, und in der Lage sein, 'UIDevice' zu verwenden – Pierce