有没有写CGPoint,CGRect等的简写方法?

Gol*_*Joe 2 swift swift3

使用Swift 3.0,我们现在声明CGPoints如下:

CGPoint(x: 1.0, y: 0.0)
Run Code Online (Sandbox Code Playgroud)

这是,呃...有点啰嗦.当你编写一个以CGPoint作为参数的函数时,事情变得非常丑陋:

myObject.callMyFunc(someVar: 1, point1: CGPoint(x: 1.0, y: 0.0), point2: CGPoint(x: 1.0, y: 2.0))
Run Code Online (Sandbox Code Playgroud)

是否有像CGPoint和CGRect这样的结构的简写?

Luc*_*tti 7

正如评论中已经建议的那样,您可以创建自己的扩展.

延期

您可以添加一个接受2的初始值设定项,CGFloat(s)不需要外部参数名称

extension CGPoint {
    init(_ x: CGFloat, _ y: CGFloat) {
        self.x = x
        self.y = y
    }
}

let point = CGPoint(1, 2)
Run Code Online (Sandbox Code Playgroud)

中缀运营商

您还可以定义中缀运算符

infix operator ° {}
func °(x: CGFloat, y: CGFloat) -> CGPoint {
    return CGPoint(x: x, y: y)
}

let point = 1.1 ° 1.1
Run Code Online (Sandbox Code Playgroud)

  • Swift 3你应该使用.zero而不是CGPointZero (2认同)
  • 很奇怪,这样的东西没有内置到语言中,但答案很棒.希望我可以多投一票. (2认同)