像现在一样推动动画

时间:2014-08-27 07:20:05

标签: ios objective-c iphone cocoa

我正在尝试推送一个viewController,我想改变推送的动画。原始的puch动画是从右/左翻转,我需要从底部制作它,就像现在的动画一样。 我尝试了下面的代码,它可以工作,但是当viewcontroller动画时,背景将是黑色的。我该怎么办?

CATransition *animation = [CATransition animation];
animation.duration = 2.0f;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.fillMode = kCAFillModeForwards;
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromTop;
[[self.navigationController.view layer] addAnimation:animation forKey:@"animation"];
[self.navigationController pushViewController:controller animated:NO];

2 个答案:

答案 0 :(得分:4)

嘿,你可以在导航控制器中使用动画NO

按下控制器时使用以下方法
- (void)animateControllerFromBottomToTop
{
    CATransition *animation = [CATransition animation];
    [animation setDelegate:self];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromTop];
    [animation setDuration:0.65f];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [[self.navigationController.view layer] addAnimation:animation forKey:@"AnimationFromBottomToTop"];
}

答案 1 :(得分:0)

您可以使用 PRESENT ,但仍然拥有导航栏

假设你的基本viewController是 VC1 ,你需要推送的下一个视图控制器是 VC2 。 只需将 VC2 嵌入另一个导航控制器中,然后从 VC1 创建一个现在的搜索导航控制器 VC2 作为 Root

呈现与您需要的动画相同,仍然会有导航栏。 希望它有所帮助。