Cómo dar "ubicaciones" a CAGradientLayer

He creado CAGradientLayer con tres colors, tengo que darle a cada color diferentes ubicaciones. Ejemplo:

 Red = 0 to 50 % Yellow = 51 to 80 % Green = 81 to 100 % 

He intentado con dar startPoint y endPoint pero no funcionó. introduzca la descripción de la imagen aquí

Si coloca el siguiente código en un patio de juegos, obtendrá el resultado deseado:

 let view = UIView(frame: CGRectMake(0,0,200,100)) let layer = CAGradientLayer() layer.frame = view.frame layer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.networkingColor().CGColor] layer.locations = [0.0, 0.8, 1.0] view.layer.addSublayer(layer) XCPShowView("ident", view: view) 

Salida:

introduzca la descripción de la imagen aquí

Simplemente defina los colors como una matriz de CGColors y una matriz del mismo tamaño de NSNumber cada uno entre 0.0 y 1.0.

No use startPoint y endPoint para eso; son para definir desde dónde y dónde se muestra el gradiente en la capa; no tiene nada que ver con los porcentajes y los colors, etc.


Versión Swift3 más reciente del código:

 let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100)) let layer = CAGradientLayer() layer.frame = view.frame layer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.networking.cgColor] layer.locations = [0.0, 0.8, 1.0] view.layer.addSublayer(layer) PlaygroundPage.current.liveView = view