更改约束以在 swift iOS 中扩展视图

问题描述

我有一个堆栈,里面有 2 个视图,黄色占堆栈的 70%,绿色占另外 30%。我想编写一个点击按钮:

  1. 将堆栈扩展到屏幕顶部,这是我通过以下方式完成的:

myStack.topAnchor.constraint(equalTo: view.topAnchor).isActive = true

  1. 然后让绿色方块占据整个堆栈,这样屏幕就完全是绿色的

我已经用“等宽约束”完成了 70:30 的事情,如下所示:widths

我怎样才能实现这个功能,重置一切恢复正常的代码是什么? desired output

解决方法

  1. 将 stackView 分布更改为 Fill Proportionally
  2. 为每个视图独立设置宽度约束(优先级 = 999,允许中断)。 (0.7 of superview.width 代表第一个,0.3 of superview.width 代表第二个)。
  3. 调用 firstView.isHidden = true,它会自动拉伸 secondView 以完全覆盖 stackView - Expanded 状态。
  4. 调用 firstView.isHidden = false,它会将您带回初始状态。