Created
July 26, 2018 18:55
-
-
Save pauljonescodes/c59e1b44d9835b3e64a1e060ac41bb44 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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