CGGradient问题与swift 3

rez*_*a23 6 swift3 ios10 xcode8

只是在将我的代码从swift 2.3转换为3的过程中.在旧代码中,我通过以下代码创建了一个渐变:

        let colours:CFArrayRef = [tColour.CGColor, bColour.CGColor]
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let gradient = CGGradientCreateWithColors(colorSpace, colours, nil)
Run Code Online (Sandbox Code Playgroud)

当Xcode 8转换代码时,它将其更改为以下内容:

    let colours:CFArray = [tColour.cgColor, bColour.cgColor]
    let colorSpace = CGColorSpaceCreateDeviceRGB()
    let gradient = CGGradient(colorsSpace: colorSpace, colors: colours, locations: nil)
Run Code Online (Sandbox Code Playgroud)

但是,代码会产生以下错误:

上下文类型"CFArray"不能与数组文字一起使用

任何人都可以建议如何正确转换代码.
感谢
Reza

vad*_*ian 22

铸造类型

let colours = [tColour.cgColor, bColour.cgColor] as CFArray
let colorSpace = CGColorSpaceCreateDeviceRGB()
let gradient = CGGradient(colorsSpace: colorSpace, colors: colours , locations: nil)
Run Code Online (Sandbox Code Playgroud)

  • 在Swift 4中不起作用 (2认同)