【问题标题】:How to change Device Orientation programmatically in Swift?如何在 Swift 中以编程方式更改设备方向?
【发布时间】:2018-06-19 20:33:24
【问题描述】:

在我的应用中,我想更改设备方向。

我已经尝试过,就像在另一个具有相同主题的问题中一样:

let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")

但这似乎只有在已经允许方向的情况下才有效,以便用户可以通过旋转设备来改变它,并且它还可以通过动画改变方向。但我希望我的应用程序在 VC1 中只有一个方向,在 VC2 中只有一个方向。用户不应该对方向有影响,也不应该有动画。这可能吗?

对不起,我的英语不好......

【问题讨论】:

    标签: ios swift orientation


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2011-12-19
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2010-12-06
    • 2023-04-11
    相关资源
    最近更新 更多