【发布时间】:2016-09-05 09:06:28
【问题描述】:
我使用以下代码从CGPointarray() 创建路径。
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 与预期的参数类型 UnsafePointer
<CGAffineTransForm>不兼容
我也试过用CGAffineTransform.identity 然后显示:
无法将“CGAffineTransform”类型的值转换为预期的参数类型“UnsafePointer
<CGAffineTransform>”
我不确定我们还能在这里使用什么。我正在使用 Xcode8 beta 6。Swift 3.0
编辑:当我尝试时:-
var transform = CGAffineTransform.identity as CGAffineTransform;
CGPathMoveToPoint( path, &transform, startPoint.x, startPoint.y)
它显示:
'CGPathMoveToPoint' 不可用:使用 move(to:transform:)
在尝试时:
CGPathMoveToPoint( path, NSNull(), startPoint.x, startPoint.y)
错误是: 无法将“NSNull”类型的值转换为预期的参数类型“UnsafePointer”
【问题讨论】:
-
这是因为在 Objective-C 中,我们这样做:
CGAffineTransform transform = CGAffineTransformIdentity; CGPathAddLineToPoint(path, &transform, point.x, point.y);带有“&var”的东西。如果你想通过NULL,显然你可以这样做:stackoverflow.com/a/27169902/1801544(我不会说 Swift,我只是指出可能的解决方案/提示)。