Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pauljonescodes/c59e1b44d9835b3e64a1e060ac41bb44 to your computer and use it in GitHub Desktop.
Save pauljonescodes/c59e1b44d9835b3e64a1e060ac41bb44 to your computer and use it in GitHub Desktop.
extension NSLayoutConstraint {
public convenience init(item view1: Any,
toItem view2: Any? = nil,
relatedBy relation: NSLayoutRelation = .equal,
attribute sharedAttribute: NSLayoutAttribute,
multiplier: CGFloat = 1,
constant c: CGFloat) {
self.init(item: view1,
attribute: sharedAttribute,
relatedBy: relation,
toItem: view2,
attribute: sharedAttribute,
multiplier: multiplier,
constant: c)
}
}
extension UIView {
@discardableResult func activateConstraint(to item: UIView? = nil,
attribute: NSLayoutAttribute,
constant: CGFloat) -> NSLayoutConstraint {
let constraint = NSLayoutConstraint(item: self, toItem: item, attribute: attribute, constant: constant)
constraint.isActive = true
return constraint
}
@discardableResult func activateConstraints(to item: UIView? = nil,
attributes: [NSLayoutAttribute],
constant: CGFloat) -> [NSLayoutConstraint] {
var constraints: [NSLayoutConstraint] = []
for attribute in attributes {
constraints.append(activateConstraint(to: item, attribute: attribute, constant: constant))
}
return constraints
}
@discardableResult func activateConstraints(to item: UIView,
using edgeInsets: UIEdgeInsets) -> [NSLayoutConstraint] {
var constraints: [NSLayoutConstraint] = []
constraints.append(activateConstraint(to: item, attribute: .leading, constant: edgeInsets.left))
constraints.append(activateConstraint(to: item, attribute: .trailing, constant: edgeInsets.right))
constraints.append(activateConstraint(to: item, attribute: .top, constant: edgeInsets.top))
constraints.append(activateConstraint(to: item, attribute: .bottom, constant: edgeInsets.bottom))
return constraints
}
@discardableResult func activateConstraintsToSuperview(using edgeInsets: UIEdgeInsets = .zero) -> [NSLayoutConstraint] {
var constraints: [NSLayoutConstraint] = []
if let superview = superview {
constraints = activateConstraints(to: superview, using: edgeInsets)
}
return constraints
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment