Я пытался анимировать свойства position
и rotation
объекта UIView
, используя явную анимацию, и в результате rotation
был успешно обновлен, а position
вида не обновился, хотя я обновил position
обоих слоев. и rotation
к его окончательному значению сразу после того, как я добавлю анимацию к слою представления (я думаю, это так называемая техника анимации явное-переопределение-неявное?).
Вот мой код:
CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"position.y"];
move.fromValue = @(self.square.center.y);
move.toValue = @(300);
CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotate.fromValue = @(DEGREES_TO_RADIANS(0));
rotate.toValue = @(DEGREES_TO_RADIANS(45));
CAAnimationGroup *group = [CAAnimationGroup animation];
group.duration = 1.0;
group.animations = @[move, rotate];
self.square.center = CGPointMake(self.square.center.x, 300);
self.square.transform = CGAffineTransformMakeRotation(M_PI/4);
[self.square.layer addAnimation:group forKey:nil];
Если я реализую анимацию положения или вращения отдельно, код работает хорошо, и я получаю ожидаемые результаты. Но когда он объединяется в CAAnimationGroup
, позиция просто не обновится до конечного значения в конце.
Есть идеи?