У меня такое чувство, что я упускаю что-то элементарное, но что может быть лучше, чем ошибиться в Интернете?
У меня довольно простой пользовательский интерфейс. Представление для моего 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
для этой работы? (И если да, то почему?)