Skip to content

Instantly share code, notes, and snippets.

@cjnevin
Last active October 23, 2022 00:54
Show Gist options
  • Save cjnevin/526e70a17e0b229727a4ddf121d6050b to your computer and use it in GitHub Desktop.
Save cjnevin/526e70a17e0b229727a4ddf121d6050b to your computer and use it in GitHub Desktop.
@resultBuilder
public enum AutoLayoutBuilder {
public static func buildBlock(_ components: Constrainable...) -> [NSLayoutConstraint] {
components.flatMap(\.constraints)
}
}
extension UIView {
@discardableResult public func addSubview<View: UIView>(_ view: View, @AutoLayoutBuilder with makeConstraints: (View) -> [Constrainable]) -> [NSLayoutConstraint] {
view.translatesAutoresizingMaskIntoConstraints = false
addSubview(view)
let constraints = makeConstraints(view).flatMap(\.constraints)
NSLayoutConstraint.activate(constraints)
return constraints
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment