1

我正在使用页面卷曲效果。单击按钮时,我能够传输页面(即在 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 之间卷曲,但我的问题是,我能在两个或多个类之间应用这种过渡吗?提前致谢

4

1 回答 1

6

不是所有的东西都是动画的。只有部分 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];

这将在推送新视图控制器时使用卷曲过渡。

对于早于 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];
于 2011-06-23T11:45:59.613 回答