我已将IB中的约束设置为相应视图控制器中的IBOutlet
。我在IB和故事板中设置的此类约束的值是纵向方向。我需要在设备更改为横向时更改这些约束,并在再次漫游到纵向时恢复它们。
我已经阅读了几篇关于在旋转设备时更新约束的帖子,但每个帖子都说不同的内容,而且我不明白这些过程和方法调用应该是什么......我已经一直在搜索关于Autolayout
的Apple文档,但我没有找到任何在旋转设备时以编程方式更改约束的方法。
我对autolayout
知之甚少,而且我真的对此感到失望......我非常感谢我应该如何管理这种情况。
提前致谢
答案 0 :(得分:3)
UIViewController接收多个与方向相关的调用 通过UIDevice通知,如果视图控制器是其中的一部分 由窗口管理的控制器层次结构。
所以基本上你必须覆盖方法并在那里更新autolayout约束。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.current.orientation.isLandscape {
// Landscape
constraintName.constant = 20.0 // constraintName will be your IBoutlet Constraint
} else {
// Portrait
constraintName.constant = 100.0 // constraintName will be your IBoutlet Constraint
}
}
希望它能解决你的问题。
答案 1 :(得分:-2)