Анимация как положения, так и вращения в CAAnimationGroup приводит к тому, что положение не обновляется в конце

Я пытался анимировать свойства 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, позиция просто не обновится до конечного значения в конце.
Есть идеи?


person inexcii    schedule 13.06.2014    source источник


Ответы (1)


Может быть, попробуйте это: конечно, с вашими значениями:

[UIView animateWithDuration:1.0f animations:^{
   self.square.center = CGPointMake(10, 10);
   self.square.transform =CGAffineTransformMakeRotation(90);
 }completion:nil];
person Gal Marom    schedule 13.06.2014