Свойства CAGradientLayer не анимируются в анимационном блоке UIView

У меня такое ощущение, что я упускаю из виду нечто элементарное, но что может быть лучше, чем ошибиться в Интернете?

У меня довольно простой пользовательский интерфейс. Мнение для моегоUIViewController это подкласс которого+layerClass являетсяCAGradientLayer, В зависимости от действий пользователя, мне нужно переместить некоторые элементы пользовательского интерфейса и изменить значения градиента фона. Код выглядит примерно так:

[UIView animateWithDuration:0.3 animations:^{
  self.subview1.frame = CGRectMake(...);
  self.subview2.frame = CGRectMake(...);
  self.subview2.alpha = 0;

  NSArray* newColors = [NSArray arrayWithObjects:
                         (id)firstColor.CGColor,
                         (id)secondColor.CGColor,
                         nil];
  [(CAGradientLayer *)self.layer setColors:newColors];
}];

Проблема в том, что изменения, которые я делаю в этом блоке для подпредставлений, анимируются очень хорошо (материал перемещается и исчезает), но изменение цветов градиента - нет. Это просто поменяется.

В настоящее время,документация говорит этот код Core Animation внутри блока анимации не будет наследовать свойства блока (длительность, замедление и т. д.). Но так ли это, что это вообще не определяет транзакцию анимации? (Смысл документов, похоже, в том, что вы получите анимацию по умолчанию, а у меня ее нет.)

Яимеют использовать явныйCAAnimation сделать эту работу? (И если да, то почему?)

Ответы на вопрос(2)

Ваш ответ на вопрос