Skip to content

Instantly share code, notes, and snippets.

@sanekgusev
Created September 25, 2017 14:29
Show Gist options
  • Save sanekgusev/c5d8ae6cd1b6f36c046abe7cf70b1451 to your computer and use it in GitHub Desktop.
Save sanekgusev/c5d8ae6cd1b6f36c046abe7cf70b1451 to your computer and use it in GitHub Desktop.
NSLayoutAnchor+MultiplierConstraints
import UIKit
extension NSLayoutXAxisAnchor {
func constraint(equalTo anchor: NSLayoutXAxisAnchor,
multiplier m: CGFloat,
constant c: CGFloat = 0.0) -> NSLayoutConstraint {
let constraint = self.constraint(equalTo: anchor, constant: c)
return constraint.constraint(multiplier: m)
}
func constraint(greaterThanOrEqualTo anchor: NSLayoutXAxisAnchor,
multiplier m: CGFloat,
constant c: CGFloat = 0.0) -> NSLayoutConstraint {
let constraint = self.constraint(greaterThanOrEqualTo: anchor, constant: c)
return constraint.constraint(multiplier: m)
}
func constraint(lessThanOrEqualTo anchor: NSLayoutXAxisAnchor,
multiplier m: CGFloat,
constant c: CGFloat = 0.0) -> NSLayoutConstraint {
let constraint = self.constraint(lessThanOrEqualTo: anchor, constant: c)
return constraint.constraint(multiplier: m)
}
}
extension NSLayoutYAxisAnchor {
func constraint(equalTo anchor: NSLayoutYAxisAnchor,
multiplier m: CGFloat,
constant c: CGFloat = 0.0) -> NSLayoutConstraint {
let constraint = self.constraint(equalTo: anchor, constant: c)
return constraint.constraint(multiplier: m)
}
func constraint(greaterThanOrEqualTo anchor: NSLayoutYAxisAnchor,
multiplier m: CGFloat,
constant c: CGFloat = 0.0) -> NSLayoutConstraint {
let constraint = self.constraint(greaterThanOrEqualTo: anchor, constant: c)
return constraint.constraint(multiplier: m)
}
func constraint(lessThanOrEqualTo anchor: NSLayoutYAxisAnchor,
multiplier m: CGFloat,
constant c: CGFloat = 0.0) -> NSLayoutConstraint {
let constraint = self.constraint(lessThanOrEqualTo: anchor, constant: c)
return constraint.constraint(multiplier: m)
}
}
private extension NSLayoutConstraint {
func constraint(multiplier: CGFloat) -> NSLayoutConstraint {
return NSLayoutConstraint(item: firstItem!,
attribute: firstAttribute,
relatedBy: relation,
toItem: secondItem,
attribute: secondAttribute,
multiplier: multiplier,
constant: constant)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment