在 Swift 3 自动将 CGRectMake 更新为 CGRect

Update CGRectMake to CGRect in Swift 3 Automatically

既然 CGRectMake、CGPointMake、CGSizeMake 等已在 Swift 3.0 中删除,是否有任何方法可以像 CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h) 那样自动更新所有初始化。手动过程..很痛苦。

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

最简单的解决方案可能就是重新定义Apple拿走的功能。示例:

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

将其放入您的模块中,所有对 CGRectMake 的调用将再次起作用。

苹果确实提供了这个功能。您只需前往:

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

然后按照屏幕提示操作。

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

简短回答:不要这样做。不要让 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)
    }
}

这样,我只要把"CGRectMake"到处改成"CGRect"就完事了。