Soluzione Same-ish come @Anton Chikin ma un po 'più robusta. Nota l'override di layerClass
... in questo modo, non devi preoccuparti di impostare il frame e il frame viene aggiornato automaticamente al momento della rotazione & ridimensionamento.
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]
}
}
}
Se si utilizza IB, è possibile impostare le proprietà tramite "Attributi runtime definiti dall'utente".
Se non si utilizza IB, utilizzare l'altro inizializzatore.
Vai a questa risposta: http://stackoverflow.com/questions/422066/gradients-on-uiview-and-uilabels-on-iphone/1931498 # 1931498 – Bill