我正在尝试推送一个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];
答案 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 。
呈现与您需要的动画相同,仍然会有导航栏。 希望它有所帮助。