This no longer works in Xcode 8 beta 6:
let colors:CFArray = [fromColor.cgColor, toColor.cgColor]
or
let gradient:CGGradient = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors:[fromColor.cgColor, toColor.cgColor], locations:[0.0, 1.0])!
The error is: Contextual type 'CFArray' cannot be used with array literal
What's the latest way to convert from array to CFArray?
It works if you add the cast as CFArray
:
let colors = [fromColor.cgColor, toColor.cgColor] as CFArray
or you can add the cast in a call:
let gradient = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors:[fromColor.cgColor, toColor.cgColor] as CFArray, locations:[0.0, 1.0])!
In Swift 3 (Xcode 8 beta 6), implicit casting to bridged types has been removed. In some cases, like this one, you will need to add explicit casting to make it work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With