Я добавляю градиент кнопки, используя приведенный ниже код
extension UIView {
func applyGradient(colors: [UIColor]) {
self.applyGradient(colors: colors, locations: nil)
}
func applyGradient(colors: [UIColor], locations: [NSNumber]?) {
let gradient = CAGradientLayer()
gradient.frame = self.bounds
gradient.colors = colors.map { $0.cgColor }
gradient.locations = locations
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 0)
self.layer.insertSublayer(gradient, at: 0)
}
}
Вызов initStyle()
в viewDidLayoutSubviews()
не работает.
func initStyle() {
submitBtn.applyGradient(colors: [#colorLiteral(red: 0.1176470588, green: 0.3882352941, blue: 0.5254901961, alpha: 1), #colorLiteral(red: 0.2941176471, green: 0.9098039216, blue: 0.9529411765, alpha: 1)])
submitBtn.layer.cornerRadius = 15.0
submitBtn.layer.masksToBounds = true
}
Я создаю все элементы интерфейса программно,Я правильно установил ограничения и работает.
lazy var submitBtn: UIButton = {
let btn = UIButton(type: .system)
btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitle("SUBMIT", for: .normal)
return btn
}()
Как заставить это работать?
Градиент отображается только в том случае, если я помещаю initStyle()
в viewDidAppear()
, а не в viewDidLayoutSubviews()
, что создает задержку при отображении градиента кнопки.Я хочу избежать этой задержки.Поэтому я добавляю его в viewDidLayoutSubviews, но тогда градиент не появляется.