如何在 Swift 中以编程方式更改设备方向?
Posted
技术标签:
【中文标题】如何在 Swift 中以编程方式更改设备方向?【英文标题】:How to change Device Orientation programmatically in Swift? 【发布时间】:2018-06-19 20:33:24 【问题描述】:在我的应用中,我想更改设备方向。
我已经尝试过,就像在另一个具有相同主题的问题中一样:
let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
但这似乎只有在已经允许方向的情况下才有效,以便用户可以通过旋转设备来改变它,并且它还可以通过动画改变方向。但我希望我的应用程序在 VC1 中只有一个方向,在 VC2 中只有一个方向。用户不应该对方向有影响,也不应该有动画。这可能吗?
对不起,我的英语不好......
【问题讨论】:
【参考方案1】:为每个 VC 声明这个变量 w/期望的方向。这是纵向的。
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)
【讨论】:
我很高兴,我到处都在使用它。 但是我还有一个问题。你如何设计 Storyboard 中的 ViewController?因为,我认为你只能有一个 ViewController 的方向...... 我不知道从情节提要中强制方向锁定的方法。但是你可以继承 VC,然后你在 storyboard 上创建的任何 VC 都只需要继承正确的方向锁。 非常感谢。我使用此代码成功修复了自定义相机的方向:D以上是关于如何在 Swift 中以编程方式更改设备方向?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中以编程方式更改 UIButton 状态
如何在 swift Xcode 中以编程方式绑定/配对蓝牙 LE 设备?
如何在 Swift 中以编程方式更改自定义 UITableViewCell 中按钮的背景颜色?
当 UIStepper 在 Swift 4 中以编程方式点击时如何更改 UILabel 的文本,如果它们都在 UITableViewCell 中?