我目前正在尝试根据设备的方向更改堆栈视图中的轴。电话是垂直的,一切都很好,但一旦我走水平,我的约束就会破裂。
目前,我在垂直堆栈视图中有蓝色视图和橙色视图。我将堆栈视图固定到超级视图的前沿,顶部和后缘。我将堆栈视图的底部固定到黑色视图。因为堆栈视图中的子视图不成比例,所以我将蓝色视图设置为70的恒定高度。 堆栈视图设置如下:
我发现在将方向更改为水平时会破坏我的约束,这是在蓝色视图上设置的恒定高度。为了解决这个问题,我创建了一个蓝色视图高度约束的IBOutlet。当手机旋转时,我正在停用约束:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.current.orientation.isLandscape {
blueViewHeight.isActive = false
stackView.axis = .horizontal
} else {
blueViewHeight.isActive = true
stackView.axis = .vertical
}
}
这不起作用。我的约束仍然存在。然后我为蓝色视图创建了一个宽度约束(认为堆栈视图需要宽度而水平)。我正在根据方向激活/停用蓝色视图的高度/宽度约束。唉,这也导致了破坏的限制(换句话说,我的观点遍布整个地方)。
我下面的图像是我想要实现的。我应该设置或不设置,以获得所需的外观。