问题描述
|
我正在使用页面卷曲效果。单击按钮即可转移页面(即在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之间进行卷曲,但是我的问题是,我可以在两个或多个类之间应用这种过渡吗?
提前致谢
解决方法
并非所有事物都是可动画的。 UIKit只有一部分是。因此,如果您要询问是否可以对
NSObject
的任何子类进行动画处理,那么否,则不能。如果您想问是否可以激活UIView
的子类,那么答案将是。它们也可以是不同的子类。尽管这是可能的,但这并不意味着它将为我们提供正确的结果。他们可能最终看起来很奇怪。您可能不想这样做。
图层也可以设置动画。
但是,这一切都取决于您对类的含义。
动画化到新的视图控制器
假设您想更改视图控制器之间的切换方式,可以使用UIView
的transitionWithView:duration:..
类方法。一个例子,
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];
推送新的视图控制器时,它将使用向上卷曲过渡。
对于低于4.0的iOS版本
由于它们不支持基于块的动画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];