当我试图在swift中绘制渐变时出现问题

Bag*_*yer 7 core-graphics ios swift

我在Swift代码中尝试绘制渐变时遇到错误:

GradientView.swift:31:40:找不到接受提供的参数的'__conversion'的重载

这是我的代码:

let context: CGContextRef = UIGraphicsGetCurrentContext()
let locations: CGFloat[] = [ 0.0, 0.25, 0.5, 0.75 ]
let colors = [UIColor.redColor().CGColor, UIColor.greenColor().CGColor,UIColor.blueColor().CGColor, UIColor.yellowColor().CGColor]
let colorspace: CGColorSpaceRef = CGColorSpaceCreateDeviceRGB()
let gradient: CGGradientRef = CGGradientCreateWithColors(colorspace, colors, locations)
//CGGradientCreateWithColors(colorspace,colors,locations)
let startPoint: CGPoint = CGPointMake(0, 0)
let endPoint: CGPoint = CGPointMake(500,500)
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
Run Code Online (Sandbox Code Playgroud)

问题是CGGradientCreateWithColors采用CFArray而不是普通的Swift数组.我不知道如何将CFArray转换为Array,并且在Apple的文档中找不到任何内容.任何的想法?谢谢

pai*_*aiv 12

斯威夫特3

let colors = [UIColor.red.cgColor, UIColor.green.cgColor,
  UIColor.blue.cgColor, UIColor.yellow.cgColor
  ] as CFArray
Run Code Online (Sandbox Code Playgroud)

斯威夫特2

您可以使用显式类型CFArray注释常量:

let colors: CFArray = [UIColor.redColor().CGColor, ...
Run Code Online (Sandbox Code Playgroud)