How to give "locations" to CAGradientLayer
If you put the following code into a Playground you will get the exact desired output:
let view = UIView(frame: CGRectMake(0,0,200,100))let layer = CAGradientLayer()layer.frame = view.framelayer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.redColor().CGColor]layer.locations = [0.0, 0.8, 1.0]view.layer.addSublayer(layer)XCPShowView("ident", view: view)
Outputting:
You simply define the colors as an array of CGColors
, and an array of the same size of NSNumber
s each between 0.0 and 1.0.
Dont use startPoint
and endPoint
for that - they are for defining from where to where the gradient is shown in the layer - it does not have anything to do with the percents and the colors etc.
More recent Swift3 version of the code:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))let layer = CAGradientLayer()layer.frame = view.framelayer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor]layer.locations = [0.0, 0.8, 1.0]view.layer.addSublayer(layer)PlaygroundPage.current.liveView = view