Есть ли альтернативный способ выполнить эту анимацию, используя блоки анимации? - PullRequest
4 голосов
/ 22 февраля 2012

В настоящее время я выполняю анимацию скручивания, выполняя следующие действия:

CATransition *animation = [CATransition animation];
animation.type = @"pageCurl";
animation.subtype = kCATransitionFromTop;
animation.fillMode = kCAFillModeForwards;
animation.duration = 1;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
[[self.view.window layer] addAnimation:animation forKey:nil];

Эта анимация просто выполняет анимацию скручивания страницы, но в итоге вы остаетесь, глядя на тот же вид, который вы запустили.с.Никакого РЕАЛЬНОГО перехода не произошло.

Теперь, используя блоки анимации, я знаю, что вы можете сделать что-то с эффектом:

[UIView transitionFromView:self.view
                    toView:aNewView    // a view to transition to
                  duration:1 
                   options:UIViewAnimationTransitionCurlUp|UIViewAnimationOptionCurveEaseIn
                completion:NULL];

Однако, используя блоки анимации, вы переходите в новый вид, aNewView, который отличается от анимации CATransition выше, в которой повторно используется один и тот же вид (реального перехода не происходит).Проблема с блоком анимации заключается в том, что вам нужно создать новое представление, переход к которому является громоздким в моем случае, потому что представление довольно сложное, и я бы не хотел создавать подкласс UIView.

Есть лиспособ выполнить вышеупомянутую анимацию CATransition, используя блоки анимации, обойдя трудности, связанные с необходимостью перестроить представление или создать собственный подкласс?

1 Ответ

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

Хорошо - так что я понял это для всех, кто заинтересован. Это на самом деле очень просто. Вы можете просто использовать метод: transitionWithView:duration:options:animations:completion:

Например:

[UIView transitionWithView:self.view
                  duration:1
                   options:UIViewAnimationOptionTransitionCurlUp|UIViewAnimationCurveEaseIn
                animations:^{ // do anything you want here } 
                completion:NULL];

Вот и все. Это покажет анимацию перехода обратно в тот же вид. Вы можете вносить любые изменения, которые вы хотите, в новый вид (возможно, отображать новый текст, что угодно ...) в блоке анимации.

Надеюсь, это поможет кому-то в дальнейшем ...

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