Update CGRectMake to CGRect in Swift 3 Automatically

后端 未结 3 422
迷失自我
迷失自我 2020-12-14 13:55

Now that CGRectMake , CGPointMake, CGSizeMake, etc. has been removed in Swift 3.0, is there any way to automatically update all initializations like from CGRectMake(0,

相关标签:
3条回答
  • 2020-12-14 14:28

    Apple actually does provide this feature. All you have to do is go to:

    Edit > Convert > To Latest Swift Syntax...

    And then follow the onscreen prompts.

    This will solve your syntax issues and you won't have to make new functions for all of the various removed functions.

    0 讨论(0)
  • 2020-12-14 14:36

    Short answer: don't do it. Don't let Apple boss you around. I hate CGRect(x:y:width:height:). I've filed a bug on it. I think the initializer should be CGRect(_:_:_:_:), just like CGRectMake. I've defined an extension on CGRect that supplies it, and plop that extension into every single project the instant I start.

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

    That way, all I have to do is change "CGRectMake" to "CGRect" everywhere, and I'm done.

    0 讨论(0)
  • 2020-12-14 14:49

    The simplest solution is probably just to redefine the functions Apple took away. Example:

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

    Put that in your module and all calls to CGRectMake will work again.

    0 讨论(0)
提交回复
热议问题