Skip to content

Instantly share code, notes, and snippets.

@waynedahlberg
Created April 15, 2019 01:55
Show Gist options
  • Save waynedahlberg/3695e58f8a0742a6367257dd19c36a3b to your computer and use it in GitHub Desktop.
Save waynedahlberg/3695e58f8a0742a6367257dd19c36a3b to your computer and use it in GitHub Desktop.
UIView Anchors for Auto Layout
import UIKit
// MARK: - UIView Anchors for Auto Layout
extension UIView {
func fillSuperview() {
anchor(top: superview?.topAnchor, leading: superview?.leadingAnchor, bottom: superview?.bottomAnchor, trailing: superview?.trailingAnchor)
}
func anchorSize(to view: UIView) {
widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
}
func anchor(top: NSLayoutYAxisAnchor?, leading: NSLayoutXAxisAnchor?, bottom: NSLayoutYAxisAnchor?, trailing: NSLayoutXAxisAnchor?, padding: UIEdgeInsets = .zero, size: CGSize = .zero) {
translatesAutoresizingMaskIntoConstraints = false
if let top = top {
topAnchor.constraint(equalTo: top, constant: padding.top).isActive = true
}
if let leading = leading {
leadingAnchor.constraint(equalTo: leading, constant: padding.left).isActive = true
}
if let bottom = bottom {
bottomAnchor.constraint(equalTo: bottom, constant: -padding.bottom).isActive = true
}
if let trailing = trailing {
trailingAnchor.constraint(equalTo: trailing, constant: -padding.right).isActive = true
}
if size.width != 0 {
widthAnchor.constraint(equalToConstant: size.width).isActive = true
}
if size.height != 0 {
heightAnchor.constraint(equalToConstant: size.height).isActive = true
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment