Так что мой класс выглядит следующим образом:Gradient вид не работает при добавлении программно
import UIKit
class GradientBarView: UIView {
override init(frame: CGRect) { // for using CustomView in code
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() {
let gradient = CAGradientLayer()
gradient.frame = bounds
gradient.startPoint = CGPoint(x: 0, y: 0.5)
gradient.endPoint = CGPointMake(1, 0.5)
gradient.colors = [AppColor.SecondaryGreen.CGColor, AppColor.HeritageGreen.CGColor, AppColor.HeritageGreen.CGColor]
layer.insertSublayer(gradient, atIndex: 0)
translatesAutoresizingMaskIntoConstraints = false
}
}
и это, как я использую его (в моем viewDidLoad)
let gradientBar = GradientBarView(frame: CGRectZero)
self.view.addSubview(gradientBar)
Затем добавьте необходимые ограничения (которые хорошо) ... так что проблема в том, что вид просто черный, но если я добавлю его через раскадровку, он будет работать нормально
, пожалуйста, помогите, что мне не хватает?
Благодаря
Вы должны использовать слой градиента как слой вида. Подробнее см. В документе 'layerClass' (https://developer.apple.com/reference/uikit/uiview/2098374-layerclass). – clemens
Вы должны указать места для разных цветов (в основном, ваш startPoint и endPoint - это строка, и вам нужно поместить цвета, которые вы задали в этой строке: ex: gradient.locations = [NSNumber (значение: 0.0), NSNumber (значение : 0.415), NSNumber (значение: 0.874), NSNumber (значение: 1.0)] 1 является конечным пунктом и 0 является стартовым. Вам нужно 1 местоположение на цвет, который вы добавили. – Jeremy