如何强制更新约束以正确定位视图
我的应用仅支持纵向方向,但一个视图控制器应始终以横向模式打开。我设法强有力地改变方向并正常工作。
但是我第一次导航到该视图时我的视图约束无法正常工作,或者在更改设备方向后导航。一旦加载并且没有发生方向改变,其视图按预期加载。当设备已经处于该方向时,约束不会在方向上正确地构建子视图。我在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
}
当我的设备处于横向模式时,视图已加载,我导航到此视图控制器并强制执行横向模式。它已更新为横向模式,但不会更新约束。
按下后再次选择它显示的选项,因为它应该处于横向模式。