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")