我正试图在Swift中创建一个CGPath。我在用CGPathCreateWithRect(rect, transformPointer)。
如何从UnsafePointer<CGAffineTransform>中获得CGAffineTransform?我试过这个:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = UnsafePointer(transform)我也试过这样做:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = &transform 但是斯威夫特抱怨'&' with non-inout argument of type...。我也尝试过将&transform直接传递到CGPathCreateWithRect,但同样的错误也停止了。
当我直接传入transform时,Swift“不能将'CGAffineTransform‘类型的值转换为预期的参数类型'UnsafePointer'”。
怎么回事,如何才能用Swift 2.1来实现这个目标呢?
发布于 2015-12-17 19:54:08
@Martin R提供了最好的答案,但作为另一种选择,我喜欢以这种方式使用不安全的可变指针,以防将来需要更改实际指针
let path = withUnsafeMutablePointer(&transform)
{
CGPathCreateWithRect(CGRect(...), UnsafeMutablePointer($0))
}发布于 2015-12-17 19:42:48
我也尝试过直接传递和转换成CGPathCreateWithRect .
你差点就到了。transform需要是一个变量,以便将它作为inout参数传递给&
var transform = CGAffineTransformIdentity
let path = CGPathCreateWithRect(CGRect(...), &transform)有关更多信息,请参见“使用Swift与Cocoa和Objective”文档中的“与C API交互”。
在Swift 3中,这将是
var transform = CGAffineTransform.identity
let path = CGPath(rect: rect, transform: &transform)或者,对于身份转换,只是
let path = CGPath(rect: rect, transform: nil)https://stackoverflow.com/questions/34342864
复制相似问题