我正在尝试在iOS应用程序中使用CISmoothLinearGradient,并且它似乎不喜欢第二个inputColor,无论我放入什么,可能是因为alpha参数。
我已经尝试了其他几种设置CIFilter的方法,但我用它来确定问题出现的位置:
let gradientFilter = CIFilter(name: "CISmoothLinearGradient")
gradientFilter?.setDefaults()
gradientFilter?.setValue([0, 0], forKey: "inputPoint0")
gradientFilter?.setValue(inputPoint1Vector, forKey: "inputPoint1")
gradientFilter?.setValue(UIColor.black, forKey: "inputColor0")
gradientFilter?.setValue(UIColor(red: 1, green: 1, blue: 1, alpha: 1), forKey: "inputColor1") // crash
控制台说明: - [UICachedDeviceWhiteColor alpha]:无法识别的选择器发送到实例0x1c4259830
最初我使用的是UIColor.white,但它仍然显示UICachedDeviceWhiteColor错误。
答案 0 :(得分:1)
在这种情况下,CIColor和CIVector将完成工作。
根据需要替换RGB和x,y的值
var color1 = CIColor(red: 238/255, green: 97/255, blue: 35/255, alpha: 1)
var color2 = CIColor(red: 246/255, green: 66/255, blue: 227/255, alpha: 1)
let gradientFilter = CIFilter(name: "CISmoothLinearGradient")
gradientFilter?.setDefaults()
gradientFilter?.setValue(CIVector(x: 0, y: 0), forKey: "inputPoint0")
gradientFilter?.setValue(CIVector(x: 200, y: 200), forKey: "inputPoint1")
gradientFilter?.setValue(color1, forKey: "inputColor0")
gradientFilter?.setValue(color2, forKey: "inputColor1")