📱 🛠
UILayoutBuilder
使用 UILayoutBuilder,可以轻松地查看视图层次结构中的约束。
此外,您可以通过自动完成前一个或两个字符来轻松找到约束方法。
您可以替换
view.addSubview(subview)
subview.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
subview.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10),
subview.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10),
subview.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10),
subview.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10),
])
为
view.ulb.add.subview(subview) { view, subview in
subview.top.equalTo.top(view.safeAreaLayoutGuide).constant(10)
subview.leading.equalTo.leading(view).constant(10)
subview.bottom.equalTo.bottom(view.safeAreaLayoutGuide).constant(-10)
subview.trailing.equalTo.trailing(view).constant(-10)
}
使用
从 ulb.add.subview
开始,接收父视图和子视图的代理。调用 proxy.add.subview
,接收子视图的代理。
您可以使用它们进行自动调整布局的约束。
view.ulb.add.subview(grayview) { view, grayview in
grayview.edges.equalTo.edges(view.safeAreaLayoutGuide).constant(10)
grayview.add.subview(greenview, whiteview) { greenview, whiteview in
greenview.size.equalTo.constant(width: 100, height: 100)
greenview.center.equalTo.center(view).constant(x: -50, y: 0)
whiteview.leading.equalTo.trailing(greenview)
whiteview.top.equalTo.top(greenview)
whiteview.size.equalTo.size(greenview)
}
}
通过 ulb.add.subview
或 proxy.add.subview
添加的每个视图都将自动将其 translatesAutoresizingMaskIntoConstraints
属性设置为 false
。
轴
subview.top.equalTo.top(view).constant(10)
// subview.topAnchor.constraint(equalTo: view.topAnchor, constant: 10)
subview.top.greaterThanOrEqualTo.top(view).constant(10)
// subview.topAnchor.constraint(greaterThanOrEqualTo: view.topAnchor, constant: 10)
subview.top.lessThanOrEqualTo.top(view).constant(10)
// subview.topAnchor.constraint(lessThanOrEqualTo: view.topAnchor, constant: 10)
subview.center.equalTo.center(view).constant(x: 100, y: 100)
// subview.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 50)
// subview.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: -50)
subview.horizontal.equalTo.horizontal(view).constant(leading: 10, trailing: -10)
// subview.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10)
// subview.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10)
subview.vertical.equalTo.vertical(view).constant(top: 10, bottom: -10)
// subview.topAnchor.constraint(equalTo: view.topAnchor, constant: 10)
// subview.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10)
subview.edges.equalTo.edges(view).constant(10)
// or
subview.edges.equalTo.edges(view).constant(top: 10, leading: 10, bottom: -10, trailing: -10)
// subview.topAnchor.constraint(equalTo: view.topAnchor, constant: 10)
// subview.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10)
// subview.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10)
// subview.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10)
尺寸
subview.height.equalTo.height(view)
// subview.heightAnchor.constraint(equalTo: view.heightAnchor)
subview.width.equalTo.width(view).multiplier(0.5).constant(100)
// subview.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.5, constant: 100)
subview.height.equalTo.constant(100)
// subview.heightAnchor.constraint(equalToConstant: 100)
subview.size.equalTo.size(view)
// subview.heightAnchor.constraint(equalTo: view.heightAnchor)
// subview.widthAnchor.constraint(equalTo: view.widthAnchor)
subview.size.equalTo.constant(width: 100, height: 100)
// subview.heightAnchor.constraint(equalToConstant: 100)
// subview.widthAnchor.constraint(equalToConstant: 100)
优先级
subview.width.equalTo.width(view).priority(.required)
// subview.widthAnchor.constraint(equalTo: view.widthAnchor).priority = .required
限制条件
let constraint: NSLayoutConstraint = subview.width.equalTo.width(view).asConstraint()
let constraints = subview.edges.equalTo.edges(view).asConstraints()
let top: NSLayoutConstraint = constraints.top
let leading: NSLayoutConstraint = constraints.leading
let bottom: NSLayoutConstraint = constraints.bottom
let trailing: NSLayoutConstraint = constraints.trailing
let constraints = subview.size.equalTo.size(view).asConstraints()
let width: NSLayoutConstraint = constraints.width
let height: NSLayoutConstraint = constraints.height
let constraints = subview.center.equalTo.center(view).asConstraints()
let x: NSLayoutConstraint = constraints.x
let y: NSLayoutConstraint = constraints.y
let constraints = subview.horizontal.equalTo.horizontal(view).asConstraints()
let leading: NSLayoutConstraint = constraints.leading
let trailing: NSLayoutConstraint = constraints.trailing
let constraints = subview.vertical.equalTo.vertical(view).asConstraints()
let top: NSLayoutConstraint = constraints.top
let bottom: NSLayoutConstraint = constraints.bottom
许可协议
根据MIT许可证。详情请参阅LICENSE文件。