自动将CGRectMake更新为Swift 3中的CGRect

yon*_*hen 53 ios cgrectmake swift swift3

现在已经在Swift 3.0中删除了CGRectMake,CGPointMake,CGSizeMake等,有没有办法自动更新所有初始化,如CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h).手动过程是非常痛苦的.

当我将代码转换为Current Swift语法时,不确定为什么Apple不会自动转换它...

rob*_*off 79

最简单的解决方案可能只是重新定义Apple带走的功能.例:

func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
    return CGRect(x: x, y: y, width: width, height: height)
}
Run Code Online (Sandbox Code Playgroud)

把它放在你的模块中,所有的调用CGRectMake都会再次运行.


mat*_*att 32

简短的回答:不要这样做.不要让Apple老板你.我讨厌 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,我所要做的就是到处改变"CGRectMake"到"CGRect",我就完成了.


Wye*_*tro 18

Apple确实提供此功能.你所要做的就是去:

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

在此输入图像描述

然后按照屏幕上的提示操作.

这将解决您的语法问题,您不必为所有各种删除的函数创建新函数.