Solución idéntica a @Anton Chikin pero un poco más robusta. Observe la anulación de layerClass
... de esta manera, no tiene que preocuparse por establecer el marco y el marco se actualiza automáticamente tras la rotación & cambiar el tamaño.
class GradientView: UIView {
var colorA : UIColor = UIColor.greenColor() {
didSet { updateGradient() }
}
var colorB : UIColor = UIColor.blueColor() {
didSet { updateGradient() }
}
override class func layerClass() -> AnyClass {
return CAGradientLayer.self
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
updateGradient()
}
func updateGradient() {
if let gLayer = layer as? CAGradientLayer {
gLayer.colors = [colorA.CGColor, colorB.CGColor]
}
}
}
Si está utilizando IB, puede establecer las propiedades definidas por el usuario a través de "atributos de ejecución".
Si no está utilizando IB, use el otro inicializador.
Ver esta respuesta: http://stackoverflow.com/questions/422066/gradients-on-uiview-and-uilabels-on-iphone/1931498 # 1931498 – Bill