mirror of https://github.com/SnapKit/SnapKit
[EXC_BAD_ACCESS] Update LayoutConstraint == operator to support iOS 10 and higher changes (#574)
* @sashabelonogov Update LayoutConstraint == operator to support iOS 10 and higher changes * Simplify return statement of the LayoutConstraint == operator
This commit is contained in:
parent
ca81e8ece0
commit
bc2b0b9332
|
@ -44,14 +44,18 @@ public class LayoutConstraint : NSLayoutConstraint {
|
||||||
}
|
}
|
||||||
|
|
||||||
internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool {
|
internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool {
|
||||||
guard lhs.firstItem === rhs.firstItem &&
|
let areLayoutAnchorsEqual: Bool
|
||||||
|
if #available(iOS 10.0, OSXApplicationExtension 10.12, *) {
|
||||||
|
areLayoutAnchorsEqual = lhs.firstAnchor === rhs.firstAnchor &&
|
||||||
|
lhs.secondAnchor === rhs.secondAnchor
|
||||||
|
} else {
|
||||||
|
areLayoutAnchorsEqual = lhs.firstItem === rhs.firstItem &&
|
||||||
lhs.secondItem === rhs.secondItem &&
|
lhs.secondItem === rhs.secondItem &&
|
||||||
lhs.firstAttribute == rhs.firstAttribute &&
|
lhs.firstAttribute == rhs.firstAttribute &&
|
||||||
lhs.secondAttribute == rhs.secondAttribute &&
|
lhs.secondAttribute == rhs.secondAttribute
|
||||||
|
}
|
||||||
|
return areLayoutAnchorsEqual &&
|
||||||
lhs.relation == rhs.relation &&
|
lhs.relation == rhs.relation &&
|
||||||
lhs.priority == rhs.priority &&
|
lhs.priority == rhs.priority &&
|
||||||
lhs.multiplier == rhs.multiplier else {
|
lhs.multiplier == rhs.multiplier
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -580,4 +580,34 @@ class SnapKitTests: XCTestCase {
|
||||||
let higherPriority: ConstraintPriority = ConstraintPriority.high.advanced(by: 1)
|
let higherPriority: ConstraintPriority = ConstraintPriority.high.advanced(by: 1)
|
||||||
XCTAssertEqual(higherPriority.value, highPriority.value + 1)
|
XCTAssertEqual(higherPriority.value, highPriority.value + 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testLayoutConstraintEqual() {
|
||||||
|
let view1 = View()
|
||||||
|
let view2 = View()
|
||||||
|
let layoutConstraint1 = LayoutConstraint(item: view1,
|
||||||
|
attribute: .top,
|
||||||
|
relatedBy: .lessThanOrEqual,
|
||||||
|
toItem: view2,
|
||||||
|
attribute: .bottom,
|
||||||
|
multiplier: 2,
|
||||||
|
constant: 30)
|
||||||
|
let layoutConstraint2 = LayoutConstraint(item: view1,
|
||||||
|
attribute: .top,
|
||||||
|
relatedBy: .lessThanOrEqual,
|
||||||
|
toItem: view2,
|
||||||
|
attribute: .bottom,
|
||||||
|
multiplier: 2,
|
||||||
|
constant: 30)
|
||||||
|
let layoutConstraint3 = LayoutConstraint(item: view1,
|
||||||
|
attribute: .top,
|
||||||
|
relatedBy: .lessThanOrEqual,
|
||||||
|
toItem: view2,
|
||||||
|
attribute: .bottom,
|
||||||
|
multiplier: 1,
|
||||||
|
constant: 50)
|
||||||
|
XCTAssertTrue(layoutConstraint1 == layoutConstraint2)
|
||||||
|
XCTAssertFalse(layoutConstraint1 == layoutConstraint3)
|
||||||
|
XCTAssertFalse(layoutConstraint2 == layoutConstraint3)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue