我读到了为了将一个swift变量/常量传递给一个参数,该参数期望UnsafePointer可以通过使用前缀变量/常量的'inout'(和号)符号来完成。 所以在下面的代码中,我想将'colors'数组作为“UnsafePointer”传递给函数CGGradientCreateWithColorComponents(),但是我得到了编译器错误:
“& with Unsout in argument of UnsafePointer”
见视觉下方的图片。
所以,问题是,如何将swift数组'colors'转换为UnsafePointer?
感谢
答案 0 :(得分: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)
答案 1 :(得分:0)
Swift 3
struct GradientPoint {
var location: CGFloat
var color: UIColor
}
gradientPoints.flatMap { $0.color.cgColor.components }.flatMap { $0 }