将视图约束到其超级视图的最少详细方法

时间:2018-11-08 21:11:41

标签: ios swift constraints

我有一个名为containerView UIView ,其中包含视图中的所有UI元素。首先要制作containerView的原因是因为我想为屏幕尺寸较小的设备实现键盘支持,而我无法将self.view嵌入到 UISCrollView中

当我在containerView上设置约束时,我会这样做:

NSLayoutConstraint.activate([
    containerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
    containerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
    containerView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
    containerView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),

    /* constraints of containerView's subviews */
}

由于我将containerView的所有四个锚定约束为view,因此我很想知道是否有一种更简单的方法(也许是单线?)可以实现这一目标。 / p>

1 个答案:

答案 0 :(得分:0)

使用内置方法,我相信这将是最短的方法。

let views = ["contentView": contentView]
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "|-[contentView]-|", views: views))
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[contentView]-|", views: views))

但这是您经常执行的操作,创建一个可以调用的扩展名是更好的选择。