Ich möchte Controller wie YouTube implementieren. Der obere Teil des Controllers spielt Video und der untere Teil bleibt statisch. Und wenn der Benutzer das Gerät dreht, wird nur Top rotiert.Wie man Video-Controller wie YouTube mit Rotation zu Landschaft implementieren
Ich versuchte es mit diesem Code zu implementieren:
@IBOutlet weak var myView: UIView!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(self.rotated), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
}
@objc func rotated() {
if UIDeviceOrientationIsLandscape(UIDevice.current.orientation) {
UIView.animate(withDuration: 0.9, animations: {
self.myView.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2)
let rect = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
self.myView.frame = rect
})
}
}
Und ich habe dieses Ergebnis:
Problem ist Controller noch im Hochformat und Statusleiste am falschen Seite.
Ich denke, dass es für diese Sache eine bessere Umsetzung gibt.
Bitte helfen
Danke für die Antwort! Aber diese Lösung dreht alle Ansichten in der Steuerung. Ich muss nur die Ansicht des Players drehen, wie auf meinem gif –
@SergeiR gezeigt. Es ist möglich, alle anderen Ansichten unverändert zu lassen und dann nur eine Ansicht zu drehen. Aber dann können Sie die Statusleiste nicht reparieren. Es wird im Porträt bleiben. Sie können es nicht vom Code ändern. Mein Vorschlag ist, die Statusleiste im Querformat zu verstecken. Das tut Youtube. Wenn Sie damit einverstanden sind, kann ich den Code aktualisieren. – Bishan