UIBezierPath に次の拡張機能を使用しています。
extension UIBezierPath {
var elements: [PathElement] {
var pathElements = [PathElement]()
withUnsafeMutablePointer(&pathElements) { elementsPointer in
CGPathApply(CGPath, elementsPointer) { (userInfo, nextElementPointer) in
let nextElement = PathElement(element: nextElementPointer.memory)
let elementsPointer = UnsafeMutablePointer<[PathElement]>(userInfo)
elementsPointer.memory.append(nextElement)
}
}
return pathElements
}
}
これはサイトからです:
ただし、これは次の行の Swift 3 で中断されます。
let elementsPointer = UnsafeMutablePointer<[PathElement]>(userInfo)
次のエラーが表示されます。
Cannot invade initializer for type 'UnsafeMutablePointer<[PathElement]>' with an argument list of type '(UnsafeMutableRawPointer?)'
これは Swift 3 の変更に関連していることを理解しています。UnsafeRawPointerMigration
ただし、これを Swift 3 に移植する最善の方法がよくわかりません。上記の拡張機能の更新されたコードを使用して、この点に関して何らかの助けを提供できますか?