Skip to content

Instantly share code, notes, and snippets.

@PadraigK
Last active May 17, 2019 17:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PadraigK/45176ae13acab210e1387397c26f89db to your computer and use it in GitHub Desktop.
Save PadraigK/45176ae13acab210e1387397c26f89db to your computer and use it in GitHub Desktop.
Demonstrates clamping a closed range instead of min(maxBound, max(minBound, value))
/*
Instead of this...
CGFloat minConstant = -60.0f;
CGFloat maxConstant = self.actionViewDefaultBottomConstraintConstant;
CGFloat stuckConstant = maxConstant - distanceToBottom;
// :chefpoop:
actionViewBottomContraintConstant = fminf(maxConstant, fmaxf(minConstant, stuckConstant));
*/
extension ClosedRange {
public func clamp(_ value : Bound) -> Bound {
return self.lowerBound > value ? self.lowerBound
: self.upperBound < value ? self.upperBound
: value
}
}
let minYPos : CGFloat = -60.0
let maxYPos = actionViewDefaultBottomConstraintConstant
let location = maxYPos - distanceToBottom
// :chefkiss:
bottomConstant = (minYPos ... maxYPos).clamp(location)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment