Объединение анимаций на UIView и CALayer subiview? - PullRequest
2 голосов
/ 01 июля 2011

Я анимирую переход UIView примерно так:

UIView *areaView = areaController.view;
[areaController viewWillAppear:YES];

UIView *subView = self.customView.subView;
UIButton *button = customView.button; // button is a subview of customView.subView

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:subView cache:YES];

[button removeFromSuperview];
[subView addSubview:areaView];
[areaController viewDidAppear:YES];


[UIView commitAnimations];

[self.areaController start];  // areaController starts the animation of the CALayer, see below

Это переворачивает новый вид, areaView из-за кнопки просто отлично, но в areaView есть другой подпредставитель, который анимирует свой CALayer:

CATransform3D rotate = CATransform3DMakeRotation(angle, 1, 0, 0);

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];

animation.toValue = [NSValue valueWithCATransform3D:rotate];
animation.duration = .08;
animation.delegate = self;
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;   

[layer addAnimation:animation forKey:@"transform"];

Мой вопрос:

Как сделать, чтобы обе анимации анимировались параллельно?

В настоящее время анимация на CALayer начинается при вызове [self.areaController start];, но результат не виден до тех пор, пока не завершится переход на суперпредставлении. Должен ли я как-то использовать анимационную группу со слоем UIView?

1 Ответ

0 голосов
/ 24 февраля 2012

Я думаю, вы не можете сделать это одновременно. Что вы можете сделать, это сделать первую анимацию также с использованием CATransform3D, тогда они будут происходить в одно и то же время. Это старый пост, хотя, возможно, вы уже решили проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...