Giải pháp tương tự như @Anton Chikin nhưng mạnh hơn một chút. Chú ý ghi đè layerClass
... theo cách này, bạn không phải lo lắng về việc đặt khung và khung được tự động cập nhật khi xoay vòng & đổi kích thước.
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]
}
}
}
Nếu bạn đang sử dụng IB, bạn có thể đặt thuộc tính thông qua "Thuộc tính thời gian chạy do người dùng xác định".
Nếu bạn không sử dụng IB, hãy sử dụng trình khởi tạo khác.
Xem câu trả lời này: http://stackoverflow.com/questions/422066/gradients-on-uiview-and-uilabels-on-iphone/1931498 # 1931498 – Bill