CIFilter CISmoothLinearGradient 在 Swift 中传递颜色时崩溃
CIFilter CISmoothLinearGradient crashing when passing color in Swift
我正在尝试在 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错误。
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")
我正在尝试在 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错误。
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")