故事板减少视图之间的差距

Storyboard reduce gap between views

我正在开发一个示例项目,其中包含三个视图,每个视图垂直间隔 10 storyboard.I 确实使用以下代码隐藏了第二个视图:

@IBOutlet var height:NSLayoutConstraint?
  height?.constant = 0

view1 和 view3 之间的差距是 20。 如何将 view1 和 view3 之间的差距缩小到 10?

我鼓励您在这种情况下使用 UIStackView,因为它会做同样的事情。

使用间距为 10 的垂直 UIStackView。您可以通过 xib、情节提要或代码完成此操作。

示例:

let stackView = UIStackView(arrangedSubviews: [view, secondView, thirdView])
stackView.axis = .vertical
stackView.alignment = .fill
stackView.spacing = 10.0

如果您不想使用UIStackView,您需要使用secondViewconstraints

secondView 创建 height, top, bottom constraint @IBOutlet 并为 show/hide 个案例更新它们,即

@IBOutlet weak var secondViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var secondViewTopConstraint: NSLayoutConstraint!
@IBOutlet weak var secondBottomConstraint: NSLayoutConstraint!

func hideSecondView(_ hide: Bool) {
    secondViewHeightConstraint.constant = hide ? 0 : 50 //used 50 as the height of secondView
    secondViewTopConstraint.constant = hide ? 10 : 20
    secondViewTopConstraint.constant = hide ? 10 : 20

    UIView.animate(withDuration: 0.3) {
        self.view.layoutIfNeeded()
    }
}