<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 10, 2015, at 6:17 AM, D. Felipe Torres via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><span style="font-size:13px" class="">One of the task that is performed often is center a frame with respect to it's parent.</span><div style="font-size:13px" class="">The code for this is short and simple:</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">rect.origin.x = (rect.width-parent.width)/2 // or...&nbsp;</div><div style="font-size:13px" class="">rect.origin.y = (rect.height-parent.height)/2</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">## Current Problems</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">- It is very easy to get it wrong and confuse X or Y and their length associations.</div><div style="font-size:13px" class="">- 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 autocomplete)</div><div style="font-size:13px" class="">- 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.</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">##Proposed Additions&nbsp;</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">2 (actually 4) extensions in CGGeometry to CGRect:</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">extension CGRect {</div><div style="font-size:13px" class="">&nbsp; &nbsp; &nbsp; public func centerX(parentRect: CGRect) -&gt; CGRect</div><div style="font-size:13px" class="">&nbsp; &nbsp; &nbsp; public mutating func centerXInPlace(parentRect: CGRect)</div><div style="font-size:13px" class=""><div class="">&nbsp; &nbsp; &nbsp; public fun centerY(parentRect: CGRect) -&gt; CGRect</div><div class="">&nbsp; &nbsp; &nbsp; public mutating func centerYInPlace(parentRect: CGRect)</div></div><div style="font-size:13px" class="">}</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">This extension allows very easily (and verbally) center a rect in respect to a parent.</div><div style="font-size:13px" class=""><br class=""></div><div style="font-size:13px" class="">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.</div><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature"><div style="color:rgb(34,34,34)" class="">++++++++++++++++++++++++++</div><div style="color:rgb(34,34,34)" class="">Diego Torres.</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px" class="">Web:&nbsp;<a href="http://dtorres.me/" target="_blank" class="">dtorres.me</a></div></div>
</div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=JfMPa-2F7wwZPzsZ3QKA8NjtONIYX4SjbWuUxtpfsTY2gpV6xdyeQWqFy0fZp5oSk1-2Bf-2FSGYmUUMzA33Ni3803E2muioyjwnCEEqmKz5GUpXgBIV8E2vlhmzhZk5pHpm9k39QX9XDg2S1USAtyyKQMl5WkuWjcegKS6l0MfkXAHjQdA1DBQlpKv0rj-2FqElUbTyr54vH7zQA3oYQeirUqTnutIFdYOck8I-2BPSxaacfYoUg-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;" class="">
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><div class=""><br class=""></div>Hi Diego,<div class=""><br class=""></div><div class="">Although the framework overlays (<a href="https://github.com/apple/swift/tree/master/stdlib/public/SDK" class="">https://github.com/apple/swift/tree/master/stdlib/public/SDK</a>) are currently in the Swift repository, the Swift project doesn't own these APIs; they belong to the respective framework owners. &nbsp;Changes to the Swift APIs of the framework, therefore, need to be proposed to the framework owners. &nbsp;I would do that through&nbsp;<a href="http://bugreport.apple.com" class="">bugreport.apple.com</a>&nbsp;using component "CoreGraphics / X".</div><div class=""><br class=""></div><div class="">HTH,<br class=""><div class="">Dave<div class=""><br class=""></div><br class="Apple-interchange-newline">

</div>
<br class=""></div></body></html>