diff --git a/Source/Constraint.swift b/Source/Constraint.swift index 6ddfb6a..c54b5d4 100644 --- a/Source/Constraint.swift +++ b/Source/Constraint.swift @@ -405,7 +405,7 @@ final public class Constraint { self.installInfo!.layoutConstraints.addObject(layoutConstraint) } - // store the layout constraints against the installed on view + // store the layout constraints against the layout from view layoutFrom!.snp_installedLayoutConstraints += newLayoutConstraints // return the new constraints @@ -414,16 +414,20 @@ final public class Constraint { internal func uninstallFromView() { if let installInfo = self.installInfo, - let installedOnView = installInfo.view, let installedLayoutConstraints = installInfo.layoutConstraints.allObjects as? [LayoutConstraint] { if installedLayoutConstraints.count > 0 { - // remove the constraints from the UIView's storage - installedOnView.removeConstraints(installedLayoutConstraints) - // remove the constraints from our associated object storage - installedOnView.snp_installedLayoutConstraints = installedOnView.snp_installedLayoutConstraints.filter { - return !contains(installedLayoutConstraints, $0) + if let installedOnView = installInfo.view { + // remove the constraints from the UIView's storage + installedOnView.removeConstraints(installedLayoutConstraints) + } + + // remove the constraints from the from item view + if let fromView = self.fromItem.view { + fromView.snp_installedLayoutConstraints = fromView.snp_installedLayoutConstraints.filter { + return !contains(installedLayoutConstraints, $0) + } } } @@ -442,9 +446,6 @@ final public class Constraint { private var offset: Any = Float(0.0) private var installInfo: ConstraintInstallInfo? - private var installed: Bool { - return (self.installInfo != nil) - } private func addConstraint(attributes: ConstraintAttributes) -> Constraint { if self.relation == nil {