CIFilter CISMOOTHINERAGENT在Swift中传递颜色时发生碰撞

CIFilter CISMOOTHINERAGENT在Swift中传递颜色时发生碰撞,swift,gradient,uicolor,cifilter,Swift,Gradient,Uicolor,Cifilter,我正在尝试在iOS应用程序中使用CismoothlineArgent,无论我输入什么,它似乎都不喜欢第二个inputColor,可能是因为alpha参数 我尝试了其他几种设置CIFilter的方法,但我使用这些方法来确定问题出现的位置: let gradientFilter = CIFilter(name: "CISmoothLinearGradient") gradientFilter?.setDefaults() gradientFilter?.setValue([0

我正在尝试在iOS应用程序中使用CismoothlineArgent,无论我输入什么,它似乎都不喜欢第二个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")

这实际上是一个有效的答案,但我将把它留给你们作为一个学习练习来完成。前两个键是
CIVectors
,后两个键是
CIColors
。啊。。我错过了,谢谢。我没有看到它们是CIColors,不是UIColors。别忘了还有
CIVectors
——你的代码看起来不像CIColors。但我不确定这是否能修复您发布的错误,因为我原以为您会遇到另一个错误。向量很好,inputColor0工作正常,但当我输入CIColor时,inputColor1无法工作。如果我输入CIColor.black(或inputColor1的任何颜色),我的应用程序立即崩溃。我希望我能分享它传递的信息,但它神奇地似乎不再破坏它了!