Пример реализации кругового градиента:
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()