首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnsafePointer<CGAffineTransform>来自CGAffineTransform

UnsafePointer<CGAffineTransform>来自CGAffineTransform
EN

Stack Overflow用户
提问于 2015-12-17 19:37:24
回答 2查看 4.3K关注 0票数 8

我正试图在Swift中创建一个CGPath。我在用CGPathCreateWithRect(rect, transformPointer)

如何从UnsafePointer<CGAffineTransform>中获得CGAffineTransform?我试过这个:

代码语言:javascript
复制
    let transform : CGAffineTransform = CGAffineTransformIdentity
    let transformPointer : UnsafePointer<CGAffineTransform> = UnsafePointer(transform)

我也试过这样做:

代码语言:javascript
复制
    let transform : CGAffineTransform = CGAffineTransformIdentity
    let transformPointer : UnsafePointer<CGAffineTransform> = &transform 

但是斯威夫特抱怨'&' with non-inout argument of type...。我也尝试过将&transform直接传递到CGPathCreateWithRect,但同样的错误也停止了。

当我直接传入transform时,Swift“不能将'CGAffineTransform‘类型的值转换为预期的参数类型'UnsafePointer'”。

怎么回事,如何才能用Swift 2.1来实现这个目标呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-17 19:54:08

@Martin R提供了最好的答案,但作为另一种选择,我喜欢以这种方式使用不安全的可变指针,以防将来需要更改实际指针

代码语言:javascript
复制
let path = withUnsafeMutablePointer(&transform)
{
  CGPathCreateWithRect(CGRect(...), UnsafeMutablePointer($0))
}
票数 3
EN

Stack Overflow用户

发布于 2015-12-17 19:42:48

我也尝试过直接传递和转换成CGPathCreateWithRect .

你差点就到了。transform需要是一个变量,以便将它作为inout参数传递给&

代码语言:javascript
复制
var transform = CGAffineTransformIdentity
let path = CGPathCreateWithRect(CGRect(...), &transform)

有关更多信息,请参见“使用Swift与Cocoa和Objective”文档中的“与C API交互”

Swift 3中,这将是

代码语言:javascript
复制
var transform = CGAffineTransform.identity
let path = CGPath(rect: rect, transform: &transform)

或者,对于身份转换,只是

代码语言:javascript
复制
let path = CGPath(rect: rect, transform: nil)
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34342864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档