Swift - анимация CAGradientLayer с помощью оператора switch
У меня есть градиентный фон, который создается с помощью CAGradientLayer. У меня также есть оператор switch, который обновляет цвета градиентного слоя в зависимости от других частей пользовательского интерфейса. Это работает отлично, однако, "затухание" между градиентами очень и очень быстрое. Я даже не указал это в быстром проекте. Это просто медленно угасает.
Я бы хотел, чтобы длительность замирания составляла 0,5 секунды.
Вот мое заявление о переключении.
switch newValue{
case 1..<70:
gradientLayer.colors = [gradientColor1a, gradientColor1b]
case 70..<120:
gradientLayer.colors = [gradientColor2a, gradientColor2b]
case 120..<190:
gradientLayer.colors = [gradientColor3a, gradientColor3b]
case 190..<400:
gradientLayer.colors = [gradientColor4a, gradientColor4b]
default:
gradientLayer.colors = [gradientColor1a, gradientColor1b]
}
В документации, которую я читаю, говорится, что вы можете анимировать с помощью toValue / fromValue, однако я не знаю, как реализовать это в моем выражении switch выше. Можно ли использовать CABasicAnimation для этого?
Как я могу заставить эти градиенты исчезать в течение 0.5 длительности, основываясь на значении моего переключателя? Благодарю.
1 ответ
Вы пытались это сделать?
CATransaction.setAnimationDuration(0.5)
Вы должны быть в состоянии поместить это чуть выше вашего оператора switch.
Посмотрите на этот ответ для большей проницательности. Измените время анимации для свойств CALayer.