swift - 如何从现有 CGRect 创建 UnsafePointer<CGRect>

标签 swift cocoa cgrect unsafe-pointers

如何创建UnsafePointer? 尝试让 mediaBoxPtr = UnsafePointer(mediaBox) 但失败了

func PDFImageData(filter: QuartzFilter?) -> NSData? {
    let pdfData = NSMutableData()
    let consumer = CGDataConsumerCreateWithCFData(pdfData);
    var mediaBox =  CGRect(x: 0, y: 0, width: bounds.size.width, height: bounds.size.height)
    let mediaBoxPtr : UnsafePointer<CGRect> = nil //???? I need CGRect(x:0, y:0, bounds.size.width, bounds.size.height)
    if let pdfContext = CGPDFContextCreate(consumer, mediaBoxPtr, nil) {
      filter?.applyToContext(pdfContext)}

最佳答案

您不必创建指针。只需传递 mediaBox 的地址即可 变量作为“输入参数”与& :

var mediaBox =  CGRect(x: 0, y: 0, width: bounds.size.width, height: bounds.size.height)
if let pdfContext = CGPDFContextCreate(consumer, &mediaBox, nil) {
    // ...
}

有关更多信息和示例,请参阅 "Interacting with C APIs" :

Mutable Pointers

When a function is declared as taking an UnsafeMutablePointer<Type> argument, it can accept any of the following:

  • ...
  • An in-out expression that contains a mutable variable, property, or subscript reference of type Type, which is passed as a pointer to the address of the mutable value.
  • ...

关于swift - 如何从现有 CGRect 创建 UnsafePointer<CGRect>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38897594/

相关文章:

swift - 如何在 macOS 中进入真正的全屏模式?

objective-c - 带有实时字体(样式文本)的 NSPopupButton

objective-c - 将 CGrect 值更改为用户坐标系

swift - "Unrecognized selector sent to instance" swift

swift - Swift 中的 Firebase 函数调用返回值

objective-c - 核心数据: entity properties getting mixed

swift - 组织和调整每个设备的 UILabel 位置 - Swift 3

ios - 旋转 CGRect 内的点

swift - 显示来自 watchOS 2 应用程序的通知

ios - 通用功能在同一环境中表现不同