Procházet zdrojové kódy

Fix layout constraint comparison

Robert Payne před 6 roky
rodič
revize
c904582015
1 změnil soubory, kde provedl 15 přidání a 3 odebrání
  1. 15 3
      Source/LayoutConstraint.swift

+ 15 - 3
Source/LayoutConstraint.swift

@@ -44,9 +44,21 @@ public class LayoutConstraint : NSLayoutConstraint {
 }
 
 internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool {
-    guard lhs.firstItem === rhs.firstItem &&
-          lhs.secondItem === rhs.secondItem &&
-          lhs.firstAttribute == rhs.firstAttribute &&
+    // ensure first anchor items match
+    guard let item1 = lhs.firstAnchor.item,
+          let item2 = rhs.firstAnchor.item,
+          item1 === item2 else {
+        return false
+    }
+
+    // ensure second anchor items match
+    guard ((lhs.secondAnchor?.item == nil && rhs.secondAnchor?.item == nil) ||
+           (lhs.secondAnchor?.item === rhs.secondAnchor?.item)) else {
+        return false
+    }
+
+    // ensure attributes, relation, priorty and multiplier match
+    guard lhs.firstAttribute == rhs.firstAttribute &&
           lhs.secondAttribute == rhs.secondAttribute &&
           lhs.relation == rhs.relation &&
           lhs.priority == rhs.priority &&