CGPathMoveToPoint 在创建路径时遇到一些麻烦

CGPathMoveToPoint have some trouble in creating path

我使用以下代码从 CGPoint array() 创建路径。

public func creatPath (for points:[CGPoint]) {
    let path = CGMutablePath()
    let startPoint = points.first

    CGPathMoveToPoint( path, CGAffineTransform.identity, startPoint.x, startPoint.y)

    var index = 0
    for point in points {
        if index == 0 { continue }
        CGPathAddLineToPoint(path, nil, points.x, points.y)
        index += 1
    }
    path.closeSubpath()
}

但它总是向我显示以下错误:

nil is not compatible with expected argument type UnsafePointer <CGAffineTransForm>

我也试过用CGAffineTransform.identity然后显示:

Cannot convert value of type 'CGAffineTransform' to expected argument type 'UnsafePointer<CGAffineTransform>'

我不确定我们还能在这里使用什么。我正在使用 Xcode8 beta 6。Swift 3.0

编辑: 当我尝试时:-

var transform = CGAffineTransform.identity as CGAffineTransform;
CGPathMoveToPoint( path, &transform, startPoint.x, startPoint.y)

显示:

'CGPathMoveToPoint' is unavailable: Use move(to:transform:)

尝试时:

CGPathMoveToPoint( path, NSNull(), startPoint.x, startPoint.y)

Error is: Cannot convert value of type 'NSNull' to expected argument type 'UnsafePointer'

Swift 3 CGMutablePath 有一个大大改进的面向对象的接口。最重要的是:transform 参数有一个默认值,可以省略。

public func creatPath (for points:[CGPoint]) {
    let path = CGMutablePath()
    let startPoint = points.first

    path.move(to: startPoint)

    var index = 0
    for point in points {
        if index == 0 { continue }
        path.addLine(to: point)
        index += 1
    }
    path.closeSubpath()
}

注意:我已将循环变量从 points 更改为 point 以避免与参数名称冲突。

更新

您可以简化代码:

public func creatPath (for points:[CGPoint]) {
    let path = CGMutablePath()
    path.addLines(between: points)
    path.closeSubpath()
}