CATransition 是如何工作的?

Posted

技术标签:

【中文标题】CATransition 是如何工作的?【英文标题】:how does the CATransition work? 【发布时间】:2011-08-07 16:17:33 【问题描述】:

我有两个视图,一个是aView,一个是bView,aView上有一个按钮,我点击按钮,我会跳转到bView,请看代码

-(IBAction)jump2b:(id)sender
CATransition *animation = [CATransition animation];
animation.delegate = self;
animation.duration = 0.25f;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromTop;
   [bView.view.layer addAnimation:animation forKey:@"animation"];
 

它不能很好地工作,它可以跳,那我该怎么办?谢谢

【问题讨论】:

【参考方案1】:

你忘了在最后添加视图...

-(IBAction)jump2b:(id)sender
    CATransition *animation = [CATransition animation];
    animation.delegate = self;
    animation.duration = 0.25f;
    animation.timingFunction = UIViewAnimationCurveEaseInOut;
    animation.fillMode = kCAFillModeForwards;
    animation.removedOnCompletion = NO;
    animation.type = kCATransitionPush;
    animation.subtype = kCATransitionFromTop;
    [bView.view.layer addAnimation:animation forKey:@"animation"];

    //add bView to current view
    [self.view addSubview:bView];

有没有理由不使用 UIView 动画块?这是自 ios 4 以来推荐的动画方法。使用 UIView 的 transitionFromView:toView:duration:options:completion: 应该适合你...

[UIView transitionFromView:aView 
                    toView:bView 
                  duration:0.25 
                   options: (UIViewAnimationCurveEaseInOut | UIViewAnimationOptionTransitionCurlUp)
                completion:nil];

我使用 UIViewAnimationOptionTransitionCurlUp 作为过渡选项的示例,但您可以选择任何 UIViewAnimationOption。

【讨论】:

感谢您的回复,但还是不行。两种方式都行。仍然只显示aView 视图初始化是否正确?如果您只是使用 addSubview 添加 bView,它是否会添加到视图中?

以上是关于CATransition 是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CATransition 中更改视图淡入淡出的颜色

带有 CATransition 的页面幻灯片动画

CATransition 提前推送过渡替换内容

在特定位置启动 CATransition

使用 CAAnimation 实现 CATransition 推送

使用 UIView 动画从 CATransition 实现 kCATransitionPush