diff --git a/Packages/vChewing_CocoaExtension/Sources/CocoaExtension/CocoaExtension_NSView.swift b/Packages/vChewing_CocoaExtension/Sources/CocoaExtension/CocoaExtension_NSView.swift index f9c5d4e0..7063cab8 100644 --- a/Packages/vChewing_CocoaExtension/Sources/CocoaExtension/CocoaExtension_NSView.swift +++ b/Packages/vChewing_CocoaExtension/Sources/CocoaExtension/CocoaExtension_NSView.swift @@ -62,14 +62,59 @@ public extension NSEdgeInsets { public extension NSView { @discardableResult func makeSimpleConstraint( _ attribute: NSLayoutConstraint.Attribute, - relation: NSLayoutConstraint.Relation, + relation givenRelation: NSLayoutConstraint.Relation, value: CGFloat? ) -> NSView { - guard let value = value else { return self } translatesAutoresizingMaskIntoConstraints = false + guard let givenValue = value, givenValue >= 0 else { return self } + var handled = false + constraints.forEach { constraint in + guard constraint.firstAttribute == attribute else { return } + switch (constraint.relation, givenRelation) { + case (.lessThanOrEqual, .lessThanOrEqual): + constraint.constant = Swift.min(givenValue, constraint.constant) + handled = true + case (.lessThanOrEqual, .equal): + constraint.constant = Swift.max(givenValue, constraint.constant) + handled = true + case (.lessThanOrEqual, .greaterThanOrEqual): + switch givenValue { + case constraint.constant, ..