@@ -10,41 +10,46 @@ import Foundation
1010import UIKit
1111
1212extension NSLayoutConstraint {
13- // Apple hasn't bothered to make multiplicitave constraints for anchors that aren't dimensions...
14- public class func constraintFor( view: UIView , attribute: NSLayoutAttribute , equalToView: UIView , multiplier: CGFloat ) -> NSLayoutConstraint {
15- return NSLayoutConstraint ( item: view,
16- attribute: attribute,
17- relatedBy: . equal,
18- toItem: equalToView,
19- attribute: attribute,
20- multiplier: multiplier,
21- constant: 0 )
13+
14+ public class func constraints( for view: UIView , filling: UIView ) -> [ NSLayoutConstraint ] {
15+ return [ view. leadingAnchor. constraint ( equalTo: filling. leadingAnchor) ,
16+ view. trailingAnchor. constraint ( equalTo: filling. trailingAnchor) ,
17+ view. topAnchor. constraint ( equalTo: filling. topAnchor) ,
18+ view. bottomAnchor. constraint ( equalTo: filling. bottomAnchor) ]
2219 }
20+ }
21+
22+ // Apple hasn't bothered to make multiplicitave constraints for anchors that aren't dimensions...
23+ // This weird function signature is working around a compiler bug.
24+ private func con( straint constraint: NSLayoutConstraint , multiplier: CGFloat ) -> NSLayoutConstraint {
25+ return NSLayoutConstraint ( item: constraint. firstItem, attribute: constraint. firstAttribute, relatedBy: constraint. relation, toItem: constraint. secondItem, attribute: constraint. secondAttribute, multiplier: multiplier, constant: constraint. constant)
26+ }
2327
24- public class func constraintFor( view: UIView , attribute: NSLayoutAttribute , lessThanOrEqualToView: UIView , multiplier: CGFloat ) -> NSLayoutConstraint {
25- return NSLayoutConstraint ( item: view,
26- attribute: attribute,
27- relatedBy: . lessThanOrEqual,
28- toItem: lessThanOrEqualToView,
29- attribute: attribute,
30- multiplier: multiplier,
31- constant: 0 )
28+ extension NSLayoutYAxisAnchor {
29+ func constraint( equalTo anchor: NSLayoutAnchor < NSLayoutYAxisAnchor > , multiplier: CGFloat ) -> NSLayoutConstraint {
30+ return con ( straint: super. constraint ( equalTo: anchor) , multiplier: multiplier)
3231 }
3332
34- public class func constraintFor( view: UIView , attribute: NSLayoutAttribute , greaterThanOrEqualToView: UIView , multiplier: CGFloat ) -> NSLayoutConstraint {
35- return NSLayoutConstraint ( item: view,
36- attribute: attribute,
37- relatedBy: . greaterThanOrEqual,
38- toItem: greaterThanOrEqualToView,
39- attribute: attribute,
40- multiplier: multiplier,
41- constant: 0 )
33+ func constraint( lessThanOrEqualTo anchor: NSLayoutAnchor < NSLayoutYAxisAnchor > , multiplier: CGFloat ) -> NSLayoutConstraint {
34+ return con ( straint: super. constraint ( lessThanOrEqualTo: anchor) , multiplier: multiplier)
35+ }
36+
37+ func constraint( greaterThanOrEqualTo anchor: NSLayoutAnchor < NSLayoutYAxisAnchor > , multiplier: CGFloat ) -> NSLayoutConstraint {
38+ return con ( straint: super. constraint ( greaterThanOrEqualTo: anchor) , multiplier: multiplier)
4239 }
40+ }
4341
44- public class func constraintsFor( view: UIView , fillingParentView: UIView ) -> [ NSLayoutConstraint ] {
45- return [ view. leadingAnchor. constraint ( equalTo: fillingParentView. leadingAnchor) ,
46- view. trailingAnchor. constraint ( equalTo: fillingParentView. trailingAnchor) ,
47- view. topAnchor. constraint ( equalTo: fillingParentView. topAnchor) ,
48- view. bottomAnchor. constraint ( equalTo: fillingParentView. bottomAnchor) ]
42+ extension NSLayoutXAxisAnchor {
43+ func constraint( equalTo anchor: NSLayoutAnchor < NSLayoutXAxisAnchor > , multiplier: CGFloat ) -> NSLayoutConstraint {
44+ return con ( straint: super. constraint ( equalTo: anchor) , multiplier: multiplier)
45+ }
46+
47+ func constraint( lessThanOrEqualTo anchor: NSLayoutAnchor < NSLayoutXAxisAnchor > , multiplier: CGFloat ) -> NSLayoutConstraint {
48+ return con ( straint: super. constraint ( lessThanOrEqualTo: anchor) , multiplier: multiplier)
49+ }
50+
51+ func constraint( greaterThanOrEqualTo anchor: NSLayoutAnchor < NSLayoutXAxisAnchor > , multiplier: CGFloat ) -> NSLayoutConstraint {
52+ return con ( straint: super. constraint ( greaterThanOrEqualTo: anchor) , multiplier: multiplier)
4953 }
5054}
55+
0 commit comments