[swift-evolution] Proposal: Extend CG(Rect)Geometry with center methods

D. Felipe Torres warorface at gmail.com
Thu Dec 10 08:17:46 CST 2015

One of the task that is performed often is center a frame with respect to
it's parent.
The code for this is short and simple:

rect.origin.x = (rect.width-parent.width)/2 // or...
rect.origin.y = (rect.height-parent.height)/2

## Current Problems

- It is very easy to get it wrong and confuse X or Y and their length
- Because this code is often found in a layout method, several other rect
variables may be defined in the scope which makes it easier to mistake one
variable with another if their names are close (and you are used to
- And finally but most importantly, while the equation here is simple, one
must parse it and understand it and is not a very swifty approach.

##Proposed Additions

2 (actually 4) extensions in CGGeometry to CGRect:

extension CGRect {
      public func centerX(parentRect: CGRect) -> CGRect
      public mutating func centerXInPlace(parentRect: CGRect)
      public fun centerY(parentRect: CGRect) -> CGRect
      public mutating func centerYInPlace(parentRect: CGRect)

This extension allows very easily (and verbally) center a rect in respect
to a parent.

I'm pretty sure there are other pretty useful extensions that can be added
to CGGeometry as well but this one I think is basic and pretty important.

Diego Torres.
Web: dtorres.me
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151210/5a9f86d7/attachment.html>

More information about the swift-evolution mailing list