看看我的RadialGradientLayer的实现,可以随时对其进行修改
class RadialGradientLayer: CALayer { override init(){ super.init() needsDisplayonBoundsChange = true } init(center:CGPoint,radius:CGFloat,colors:[CGColor]){ self.center = center self.radius = radius self.colors = colors super.init() } required init(prer aDeprer: NSCoder) { super.init() } var center:CGPoint = CGPointMake(50,50) var radius:CGFloat = 20 var colors:[CGColor] = [UIColor(red: 251/255, green: 237/255, blue: 33/255, alpha: 1.0).CGColor , UIColor(red: 251/255, green: 179/255, blue: 108/255, alpha: 1.0).CGColor] override func drawInContext(ctx: CGContext!) { CGContextSaveGState(ctx) var colorSpace = CGColorSpaceCreateDeviceRGB() var locations:[CGFloat] = [0.0, 1.0] var gradient = CGGradientCreateWithColors(colorSpace, colors, [0.0,1.0]) var startPoint = CGPointMake(0, self.bounds.height) var endPoint = CGPointMake(self.bounds.width, self.bounds.height) CGContextDrawRadialGradient(ctx, gradient, center, 0.0, center, radius, 0) }}就我而言,我只需要使用两种颜色,如果需要更多颜色,则需要修改中
location声明的数组
drawInContext。同样,在从此类创建对象之后,请不要忘记调用它,
setNeedsDisplay()否则它将无法正常工作。有时我还需要不同的大小渐变,所以这就是为什么您必须在初始值设定项中传递半径参数以及渐变中心的原因



