在Swift 3中自动更新CGRectMake到CGRect

现在CGRectMake,CGPointMake,CGSizeMake等已经在Swift 3.0中被移除了,有什么办法可以自动更新所有的初始化,比如从CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h) 。 手动过程是相当痛苦的。

不知道为什么苹果不会自动转换,当我将代码转换为当前迅速语法…

苹果实际上提供这个function。 所有你需要做的就是去:

编辑 > 转换 > 到最新的Swift语法…

在这里输入图像说明

然后按照屏幕提示进行操作。

这将解决你的语法问题,你将不必为所有的被删除的函数做出新的function。

最简单的解决scheme可能只是重新定义苹果拿走的function。 例:

 func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect { return CGRect(x: x, y: y, width: width, height: height) } 

把它放在你的模块中,所有对CGRectMake调用都会重新开始。

简短的回答:不要这样做。 不要让苹果老大你在身边。 我讨厌 CGRect(x:y:width:height:) 。 我已经提交了一个错误。 我认为初始化程序应该是CGRect(_:_:_:_:) ,就像CGRectMake一样。 我已经在CGRect上定义了一个扩展,它提供了这个扩展,并且在我启动的时候把这个扩展插入到每一个项目中。

 extension CGRect { init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) { self.init(x:x, y:y, width:w, height:h) } } 

这样,我所要做的就是把CGRectMake改成CGRect,我就完成了。