эффект скручивания страницы для перехода между классами в iphone - PullRequest
1 голос
/ 23 июня 2011

Я работаю с эффектом скручивания страницы. При нажатии кнопки я смог пройти страницу (то есть между UIViews). Следующий код показывает то же самое

UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.5];  
    if ([sender tag] == 1) {
        [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:placeholder cache:YES];
    }
    else {
        [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:placeholder cache:YES];
    }
    if (view1OnTop) {
        [view1 removeFromSuperview];
        [placeholder addSubview:view2];
    }
    else {
        [view2 removeFromSuperview];
        [placeholder addSubview:view1];
    }
    [UIView commitAnimations];

    view1OnTop = !view1OnTop;

с этим я смог свернуться между UIViews, но мой вопрос, смогу ли я применить этот вид перехода между двумя или более классами ??? заранее спасибо

1 Ответ

6 голосов
/ 23 июня 2011

Не все оживляемо.Только части UIKit есть.Так что, если вы хотите спросить, можно ли анимировать любой подкласс NSObject, то нет, они не могут.Если вы хотите спросить, можно ли анимировать подклассы UIView, тогда ответ будет положительным.Они также могут быть разными подклассами.Хотя это возможно, это не значит, что оно даст нам правильные результаты.Они могут в конечном итоге выглядеть довольно странно.Вы можете не захотеть этого делать.

Слои тоже можно анимировать.

Однако все зависит от того, что вы подразумеваете под классами.

Анимация для нового контроллера представления

Скажем, вы хотите изменить способ переключения между контроллерами представления, вы можете использовать transitionWithView:duration:.. метод класса UIView.Например,

SecondViewController * viewController = [[[SecondViewController alloc] initWithNibName:nil bundle:nil] autorelease];
[UIView transitionWithView:self.view.window
                  duration:1.0f
                   options:UIViewAnimationOptionTransitionCurlUp
                animations:^{
                    [self.navigationController pushViewController:viewController animated:NO];
                }
                completion:NULL];

При нажатии нового контроллера представления будет использоваться переход в режим скручивания.

Для версий iOS старше 4.0

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

[UIView beginAnimations:@"Curl up" context:NULL];
[UIView setAnimationDuration:1.0f];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view.window cache:YES];

[self.navigationController pushViewController:viewController animated:NO];

[UIView commitAnimations];
...