Finish support for UILayoutGuide via Constraint MAker

This commit is contained in:
Robert Payne 2016-10-08 00:06:40 +13:00
parent dc304472aa
commit d32a47f0dd
3 changed files with 53 additions and 3 deletions

View File

@ -49,12 +49,12 @@ extension ConstraintDSL {
private var labelKey: UInt8 = 0 private var labelKey: UInt8 = 0
public protocol ConstraintAttributesDSL: ConstraintDSL { public protocol ConstraintBasicAttributesDSL : ConstraintDSL {
} }
extension ConstraintAttributesDSL { extension ConstraintBasicAttributesDSL {
// MARK: Basics // MARK: Basics
public var left: ConstraintItem { public var left: ConstraintItem {
return ConstraintItem(target: self.target, attributes: ConstraintAttributes.left) return ConstraintItem(target: self.target, attributes: ConstraintAttributes.left)
} }
@ -107,6 +107,12 @@ extension ConstraintAttributesDSL {
return ConstraintItem(target: self.target, attributes: ConstraintAttributes.center) return ConstraintItem(target: self.target, attributes: ConstraintAttributes.center)
} }
}
public protocol ConstraintAttributesDSL : ConstraintBasicAttributesDSL {
}
extension ConstraintAttributesDSL {
// MARK: Baselines // MARK: Baselines
@available(*, deprecated:3.0, message:"Use .lastBaseline instead") @available(*, deprecated:3.0, message:"Use .lastBaseline instead")

View File

@ -31,6 +31,27 @@
@available(iOS 9.0, *) @available(iOS 9.0, *)
public struct ConstraintLayoutGuideDSL: ConstraintAttributesDSL { public struct ConstraintLayoutGuideDSL: ConstraintAttributesDSL {
@discardableResult
public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] {
return ConstraintMaker.prepareConstraints(item: self.guide, closure: closure)
}
public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) {
ConstraintMaker.makeConstraints(item: self.guide, closure: closure)
}
public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) {
ConstraintMaker.remakeConstraints(item: self.guide, closure: closure)
}
public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) {
ConstraintMaker.updateConstraints(item: self.guide, closure: closure)
}
public func removeConstraints() {
ConstraintMaker.removeConstraints(item: self.guide)
}
public var target: AnyObject? { public var target: AnyObject? {
return self.guide return self.guide
} }

View File

@ -60,6 +60,29 @@ class SnapKitTests: XCTestCase {
} }
func testGuideMakeConstraints() {
let v1 = View()
let g1 = UILayoutGuide()
self.container.addSubview(v1)
self.container.addLayoutGuide(g1)
v1.snp.makeConstraints { (make) -> Void in
make.top.equalTo(g1.snp.top).offset(50)
make.left.equalTo(g1.snp.top).offset(50)
return
}
XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints installed")
g1.snp.makeConstraints { (make) -> Void in
make.edges.equalTo(v1)
return
}
XCTAssertEqual(self.container.snp_constraints.count, 6, "Should have 6 constraints installed")
}
func testMakeImpliedSuperviewConstraints() { func testMakeImpliedSuperviewConstraints() {
let v1 = View() let v1 = View()
let v2 = View() let v2 = View()