RadialGradientLayer


#1

Пример реализации кругового градиента:

class RadialGradientLayer: CALayer {

    var center: CGPoint!
    var radius: CGFloat!
    var colors = [CGColor]()

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(coder aDecoder: NSCoder) {
    super.init()
}

override func drawInContext(ctx: CGContext) {
    CGContextSaveGState(ctx)
    let colorSpace = CGColorSpaceCreateDeviceRGB()
    let locations:[CGFloat] = [0.0, 0.5, 1.0]
    let gradient = CGGradientCreateWithColors(colorSpace, colors, locations)

    CGContextDrawRadialGradient(ctx, gradient, center, 0.0, center, radius, CGGradientDrawingOptions.DrawsAfterEndLocation)
}

}

и его установка:

    let x = self.view.center.x
    let y = self.view.center.y 
    let center = CGPoint(x: x, y: y)
    let radius = CGFloat(250)
    let a = RadialGradientLayer(center: center, radius: radius, colors: [UIColor.blackColor().CGColor,
                                                                            UIColor.redColor().CGColor,
                                                                            UIColor.yellowColor().CGColor])
    a.frame = self.view.bounds
    self.view.layer.insertSublayer(a, atIndex: 0)
    a.setNeedsDisplay()