2016-04-07 3 views
0

У меня есть фон градиента, который создается через CAGradientLayer. У меня также есть оператор switch, который обновляет цвета gradientLayer в зависимости от других частей пользовательского интерфейса. Это прекрасно работает, однако, «угасание» между градиентами очень быстрое. Я даже не указал это в быстром проекте. Он просто медленно исчезает.Swift - анимация CAGradientLayer с помощью оператора switch

Я хотел бы, чтобы продолжительность выцветания составляла 0,5 секунды.

Вот моя инструкция switch.

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, однако, я не знаю, как реализовать это в моем заявлении переключатель выше. Можно ли использовать CABasicAnimation для этого?

Как я могу заставить эти градиенты исчезать на 0,5 продолжительности в зависимости от значения от моего переключателя? Благодарю.

+0

Вы знаете, как настроить анимацию за пределами заявления выключателя? – LulzCow

ответ

1

Вы пробовали это сделать?

CATransaction.setAnimationDuration(0.5) 

Вы должны иметь возможность установить это непосредственно над оператором switch.

Взгляните на этот ответ на более глубокое Change animation time for properties of a CALayer

+0

вы рок !!! Это сделало именно то, в чем я нуждался. – Joe

Смежные вопросы