【问题标题】:How do you satisfy the 'lineOrigins' argument in CTFrameGetLineOrigins() in Swift? [duplicate]您如何满足 Swift 中 CTFrameGetLineOrigins() 中的“lineOrigins”参数? [复制]
【发布时间】:2019-02-18 13:39:58
【问题描述】:

我试图从这里找出CTFrameGetLineOriginsCTFrameGetLineOrigins Got Incorrect Origins,并试图将 ObjC 转换为 Swift。

对象-C:

CFArrayRef lines = CTFrameGetLines(frame);
size_t numOfLines = CFArrayGetCount(lines);
CGPoint lineOrigins[numOfLines];
CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), lineOrigins);

斯威夫特:

let lines = CTFrameGetLines(frame)
let numOfLines: size_t = CFArrayGetCount(lines)
let lineOrigins = [CGPoint](repeating: CGPoint.zero, count: numOfLines)
CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), lineOrigins)

但 CTFrameGetLineOrigins 的第三个参数出现错误:
无法将类型“[CGPoint]”的值转换为预期的参数类型“UnsafeMutablePointer”

如何解决这个错误?

【问题讨论】:

    标签: objective-c swift unsafemutablepointer ctframe


    【解决方案1】:

    你可以试试

    CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), UnsafeMutablePointer(&lineOrigins))
    

    或直接

    CTFrameGetLineOrigins(frame, CFRangeMake(0, 0),&lineOrigins)
    

    【讨论】:

    • 啊,是的,我刚刚发现了这个。 UnsafeMutablePointer() 似乎也是可选的。
    【解决方案2】:

    其实我只是在参数中添加了&,并将常量变成了变量。

    let lines = CTFrameGetLines(frame)
    let numOfLines: size_t = CFArrayGetCount(lines)
    var lineOrigins = [CGPoint](repeating: CGPoint.zero, count: numOfLines)
    CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), &lineOrigins)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      相关资源
      最近更新 更多