我使用UIImage + Gradient.swift文件为我的标签添加渐变,但是我收到此错误:
上下文类型cgfloat不能与数组文字一起使用
我已经回顾了一些常见问题解答Q& A但我仍感到困惑。
以下是代码:
let components = colors.reduce([]) { (currentResult: [CGFloat], currentColor: UIColor) -> [CGFloat] in
var result = currentResult
let numberOfComponents = currentColor.cgColor.numberOfComponents
let components = currentColor.cgColor.components
if numberOfComponents == 2 {
result.append([components?[0], components?[0], components?[0], components?[1]])
} else {
result.append([components?[0], components?[1], components?[2], components?[3]])
}
return result
}
给出错误的行是:
result.append([components?[0],components?[0],components?[0],components?[1]]) result.append([components?[0],components?[1],components?[2],components?[3]])
答案 0 :(得分:2)
此错误与尝试将不是数组的变量设置为数组有关。例如,这会产生类似的错误:
var myFavSnacks:String = ["Apples","Grasses","Carrots"] //gives similar error
在您的情况下,它认为您想要将CGFloats数组添加到数组中的一个索引,而不是向您的数组添加一些CGFloats。
要一次向数组添加多个项目,请使用contentsOf:
,如下所示:
colors.append(contentsOf: ["red", "blue"])
//adds strings "red" and "blue" to an existing array of strings called colors