Pārlūkot izejas kodu

fix "Mutating a priority from required to not on an installed constra… (#323)

* fix "Mutating a priority from required to not on an installed constraint (or vice-versa) is not supported." when the priority is not changed

* add more check when changing layout constraint priority

* add more lenient check when changing layout constraint priority

* fix UILayoutPriorityRequired available only on iOS

* fix undeclared UILayoutPriority on macOS

* add check for tvOS
vhosune 9 gadi atpakaļ
vecāks
revīzija
3f529652a4
1 mainītis faili ar 11 papildinājumiem un 1 dzēšanām
  1. 11 1
      Source/Constraint.swift

+ 11 - 1
Source/Constraint.swift

@@ -228,7 +228,17 @@ public class Constraint {
         for layoutConstraint in self.layoutConstraints {
             let attribute = (layoutConstraint.secondAttribute == .notAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute
             layoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: attribute)
-            layoutConstraint.priority = self.priority.constraintPriorityTargetValue
+            
+            #if os(iOS) || os(tvOS)
+                let requiredPriority: UILayoutPriority = UILayoutPriorityRequired
+            #else
+                let requiredPriority: Float = 1000.0
+            #endif
+            
+            
+            if (layoutConstraint.priority < requiredPriority), (self.priority.constraintPriorityTargetValue != requiredPriority) {
+                layoutConstraint.priority = self.priority.constraintPriorityTargetValue
+            }
         }
     }