Make ConstraintMakerRelatable targets work with UILayoutGuide (#372)

* Make ConstraintMakerRelatable targets work with UILayoutGuide

* Fix unit tests on macOS

* Fix the OS API version availability directives
This commit is contained in:
Felix Lapalme 2016-12-25 06:37:38 -05:00 committed by Robert Payne
parent 32cd509939
commit 63bf462e81
3 changed files with 15 additions and 10 deletions

View File

@ -57,6 +57,9 @@ public class ConstraintMakerRelatable {
} else if let other = other as? ConstraintConstantTarget { } else if let other = other as? ConstraintConstantTarget {
related = ConstraintItem(target: nil, attributes: ConstraintAttributes.none) related = ConstraintItem(target: nil, attributes: ConstraintAttributes.none)
constant = other constant = other
} else if #available(iOS 9.0, OSX 10.11, *), let other = other as? ConstraintLayoutGuide {
related = ConstraintItem(target: other, attributes: ConstraintAttributes.none)
constant = 0.0
} else { } else {
fatalError("Invalid constraint. (\(file), \(line))") fatalError("Invalid constraint. (\(file), \(line))")
} }

View File

@ -60,3 +60,7 @@ extension ConstraintItem: ConstraintRelatableTarget {
extension ConstraintView: ConstraintRelatableTarget { extension ConstraintView: ConstraintRelatableTarget {
} }
@available(iOS 9.0, OSX 10.11, *)
extension ConstraintLayoutGuide: ConstraintRelatableTarget {
}

View File

@ -59,21 +59,21 @@ class SnapKitTests: XCTestCase {
XCTAssertEqual(self.container.snp_constraints.count, 6, "Should have 6 constraints installed") XCTAssertEqual(self.container.snp_constraints.count, 6, "Should have 6 constraints installed")
} }
#if os(iOS) || os(tvOS)
func testGuideMakeConstraints() { func testGuideMakeConstraints() {
guard #available(iOS 9.0, *) else { return } guard #available(iOS 9.0, OSX 10.11, *) else { return }
let v1 = View() let v1 = View()
let g1 = UILayoutGuide()
let g1 = ConstraintLayoutGuide()
self.container.addSubview(v1) self.container.addSubview(v1)
self.container.addLayoutGuide(g1) self.container.addLayoutGuide(g1)
v1.snp.makeConstraints { (make) -> Void in v1.snp.makeConstraints { (make) -> Void in
make.top.equalTo(g1.snp.top).offset(50) make.top.equalTo(g1).offset(50)
make.left.equalTo(g1.snp.top).offset(50) make.left.equalTo(g1.snp.top).offset(50)
return return
} }
XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints installed") XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints installed")
g1.snp.makeConstraints { (make) -> Void in g1.snp.makeConstraints { (make) -> Void in
@ -83,8 +83,7 @@ class SnapKitTests: XCTestCase {
XCTAssertEqual(self.container.snp_constraints.count, 6, "Should have 6 constraints installed") XCTAssertEqual(self.container.snp_constraints.count, 6, "Should have 6 constraints installed")
} }
#endif
func testMakeImpliedSuperviewConstraints() { func testMakeImpliedSuperviewConstraints() {
let v1 = View() let v1 = View()
let v2 = View() let v2 = View()
@ -130,7 +129,6 @@ class SnapKitTests: XCTestCase {
} }
func testRemakeConstraints() { func testRemakeConstraints() {
let v1 = View() let v1 = View()
let v2 = View() let v2 = View()