CGFloat has .max and .min. And if you use them, you get:
2016-06-10 13:32:14.185 Untitled Page 10[18435:13174627] This 
NSLayoutConstraint is being configured with a constant that exceeds internal 
limits.  A smaller value will be substituted, but this problem should be fixed. 
Break on void _NSLayoutConstraintNumberExceedsLimit() to debug.  This will be 
logged only once.  This may break in the future.

-- E

> On Jun 10, 2016, at 12:24 PM, Darren Mo via swift-evolution 
> <[email protected]> wrote:
> 
> Today, one can get max/min by doing:
> 
> let max = Float.greatestFiniteMagnitude
> let min = -Float.greatestFiniteMagnitude
> 
> I propose that the floating point types expose properties for max/min.
> 
> max, in particular, is used quite a lot in UI code for fixed-width layout of 
> text. But having to spell out greatestFiniteMagnitude every time is a pain. 
> For example…
> 
> Compare this:
> extension NSTextView {
>    func configureForFixedWidth() {
>       minSize = NSSize.zero
>       maxSize = NSSize(width: CGFloat.greatestFiniteMagnitude, height: 
> CGFloat.greatestFiniteMagnitude)
>       isHorizontallyResizable = false
>       isVerticallyResizable = true
> 
>       textContainer?.containerSize = NSSize(width: bounds.width, height: 
> CGFloat.greatestFiniteMagnitude)
>       textContainer?.widthTracksTextView = true
>    }
> }
> 
> To this:
> extension NSTextView {
>    func configureForFixedWidth() {
>       minSize = NSSize.zero
>       maxSize = NSSize(width: CGFloat.max, height: CGFloat.max)
>       isHorizontallyResizable = false
>       isVerticallyResizable = true

> 
>       textContainer?.containerSize = NSSize(width: bounds.width, height: 
> CGFloat.max)
>       textContainer?.widthTracksTextView = true
>    }
> }
> 
> The latter snippet is much more understandable (and less typing). It is more 
> understandable because users don’t have to know exactly how floating point 
> works in order to get the equivalent of Int.max/Int.min for CGFloat.
> 
> One of the concerns with naming them max/min is that infinity/-infinity is 
> technically the real max/min. We could name them finiteMax/finiteMin, but I 
> think keeping the names consistent with Int et al. is important since they 
> serve the same purpose. Besides, I think dealing with infinity is rare in 
> real-world usage. Those that are using infinity know that it is obviously the 
> true max.
> 
> I think adding these floating point properties is in line with Swift 3’s 
> goals of consistency and refinement.
> 
> Thoughts?
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to