У меня есть функция класса для создания слоя CAGradient и вставка его в UIView, который отлично работает.Изменение цвета в CAGradientLayer после вставки
Однако я хотел бы изменить градиент после отображения страницы, а повторная выполнение одной и той же функции не работает.
На отображаемой странице я использую ползунки, чтобы установить новые цвета в два фонового изображения UIButton и вызвать функцию ниже. Я ожидаю, что фон градиентного слоя изменится при изменении слайдера, но это не так. Я проверил, что функция вызывается, и значения цвета действительны.
Как изменить градиент при перемещении ползунков?
Вот функция класса:
class func setGradientBG(_ firstColor: CGColor, secondColor: CGColor, vertical: Bool, thisView: UIView){
let gradientLayer = CAGradientLayer()
gradientLayer.frame = thisView.bounds
gradientLayer.colors = [firstColor, secondColor]
gradientLayer.locations = [0.0, 1.2]
if !vertical{
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.0)
}
thisView.layer.insertSublayer(gradientLayer, at: 0)
}
А вот функция вызывается из ползунков:
func doSlider(){
CommonFuncs.setGradientBG((self.TopColorBut.backgroundColor?.cgColor)!, secondColor: (self.BottomColorBut.backgroundColor?.cgColor)!, vertical: true, thisView: self.view)
}
использование thisView.layer.setNeedsDisplay() – Idali
Какой класс содержит это метод 'doSlider'? Сколько различных представлений вы добавляете градиенты? Почему 'setGradientBG' метод класса? –