3

我读到,为了将 swift 变量/常量传递给期望 UnsafePointer 的参数,可以通过使用变量/常量前缀的“inout”(与号)符号来完成。因此,在下面的代码中,我想将“颜色”数组作为“UnsafePointer”传递给函数 CGGradientCreateWithColorComponents(),但出现编译器错误:

"& 与 UnsafePointer 类型的非 inout 参数一起使用"

视觉效果见下图。

所以,问题是,如何将 swift 数组 'colors' 转换为 UnsafePointer ?

谢谢

在此处输入图像描述

4

2 回答 2

2

将您的颜色类型更改为明确[CGFloat]

var colors : [CGFloat] = [0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0]

不需要处理&什么的。但是您实际上必须传入一个CGFloat.

并且不要传入NULL但是nil

let gradient = CGGradientCreateWithColorComponents(baseSpace, colors, nil, 2)
于 2015-12-26T20:07:31.157 回答
0

斯威夫特 3

struct GradientPoint {
  var location: CGFloat
  var color: UIColor
}

gradientPoints.flatMap { $0.color.cgColor.components }.flatMap { $0 }
于 2017-07-01T23:11:47.707 回答