如何在 Swift 中以编程方式更改设备方向?
How to change Device Orientation programmatically in Swift?
我想在我的应用程序中更改设备方向。
我已经试过了,就像在另一个主题相同的问题中一样:
let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
但这似乎只有在已经允许方向的情况下才有效,以便用户可以通过旋转设备来更改它,并且它还可以通过动画更改方向。但我希望我的应用程序在 VC1 中只有一个方向,在 VC2 中只有一个方向。用户不应该对 Orientation 有影响,也不应该有动画。这可能吗?
抱歉我的英语不好....
对于每个 VC 声明这个带有所需方向的变量。这是纵向的。
override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .portrait }
然后在外观上强制执行所需的方向。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.setAnimationsEnabled(false)
UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
UIView.setAnimationsEnabled(true)
}
我想在我的应用程序中更改设备方向。
我已经试过了,就像在另一个主题相同的问题中一样:
let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
但这似乎只有在已经允许方向的情况下才有效,以便用户可以通过旋转设备来更改它,并且它还可以通过动画更改方向。但我希望我的应用程序在 VC1 中只有一个方向,在 VC2 中只有一个方向。用户不应该对 Orientation 有影响,也不应该有动画。这可能吗?
抱歉我的英语不好....
对于每个 VC 声明这个带有所需方向的变量。这是纵向的。
override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .portrait }
然后在外观上强制执行所需的方向。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.setAnimationsEnabled(false)
UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
UIView.setAnimationsEnabled(true)
}