更改视图方向时约束不起作用

时间:2017-03-24 09:22:03

标签: ios swift3 orientation landscape

如何强制更新约束以正确定位视图

我的应用仅支持纵向方向,但一个视图控制器应始终以横向模式打开。我设法强有力地改变方向并正常工作。

但是我第一次导航到该视图时我的视图约束无法正常工作,或者在更改设备方向后导航。一旦加载并且没有发生方向改变,其视图按预期加载。当设备已经处于该方向时,约束不会在方向上正确地构建子视图。我在xcode 8.2.1工作。

我查了很多链接,但没有找到解决这个问题的方法。我也尝试更新视图和约束。

    self.view.setNeedsUpdateConstraints()
    self.view.setNeedsLayout()
    self.view.setNeedsDisplay()
    self.view.setNeedsFocusUpdate()

我使用的代码是 -

    override func viewDidLoad()
    {
        super.viewDidLoad()
      let value = UIInterfaceOrientation.landscapeLeft.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")
    }

    override func viewWillDisappear(_ animated: Bool)
    {
       let value = UIInterfaceOrientation.portrait.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")
    }

    override var shouldAutorotate: Bool
    {
        return true
    }

当我的设备处于横向模式时,视图已加载,我导航到此视图控制器并强制执行横向模式。它已更新为横向模式,但不会更新约束。

按下后再次选择它显示的选项,因为它应该处于横向模式。

0 个答案:

没有答案