ropriedades @CAGradientLayer não animadas no bloco de animação UIView

Tenho a sensação de que estou ignorando algo elementar, mas que melhor maneira de encontrá-lo do que estar errado na internet?

Eu tenho uma interface bastante básica. A vista para o meuUIViewController é uma subclasse cuja+layerClass éCAGradientLayer. Dependendo das ações do usuário, preciso mover alguns elementos da interface do usuário e alterar os valores do gradiente do plano de fundo. O código é mais ou menos assim:

[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];
}];

A questão é que as alterações que eu faço neste bloco nas subvisões são animadas muito bem (as coisas se movem e desaparecem), mas a alteração nas cores do gradiente não. Apenas troca.

Agora, documentação diz esse código de animação principal em um bloco de animação não herdará as propriedades do bloco (duração, flexibilização etc.). Mas será que isso não define uma transação de animação? (A implicação dos documentos parece ser que você receberá uma animação padrão, onde eu não recebo nenhuma.)

Do Ite para usar explícitoCAAnimation para fazer isso funcionar? (E se sim, por quê?)

questionAnswers(4)

yourAnswerToTheQuestion