popViewControllerAnimated:自定义过渡动画?(popViewControll

2019-06-24 08:10发布

是的,我一直在寻求一个答案了。 无解的工作,除一人外,不给一个淡出过渡的选项,只有翻转或卷曲。

像这样:

methodname
    configure animation
    [self.navigationController popViewControllerAnimated:NO];

不管我什么各种过渡动画配置的,没有什么是单纯采用典型的单线流行明显不同。 如果我将其更改为…Animated:YES]; ,我得到的标准弹出动画,也许从破碎的配置奇怪的事情发生。

所以我的问题是这样的:我怎样才能做一个pop着,如果不是CrossDissolve ,那么至少东西看起来一样吗? 是,甚至有可能与导航控制器?

使用模态的看法会有默认的动画我想,我可以管理视图栈很轻松了,但我不想这样做。

Answer 1:

对于这种类型的转变我真的建议一个模式视图控制器,这就是该系统的设计方式。

但是,如果你坚持使用导航控制器有一个办法,虽然有点难看。

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];

CATransition *transition = [CATransition animation];
[transition setType:kCATransitionFade];
[self.navigationController.view.layer addAnimation:transition forKey:@"someAnimation"];

[self.navigationController popViewControllerAnimated:YES];
[CATransaction commit];

CATransaction将禁用所有标准的动画。 所述CATransition增加时的观点被交换淡入过渡到导航控制器层(在此情况下除去被弹出的视图控制器视图)。



Answer 2:

另外,在上述的iOS 7,可能要考虑UIViewControllerAnimatedTransitioning用于呈现视图控制器,或UINavigationControllerDelegate方法:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC

我有一些来自另一个问题示例代码以获得更多信息。



Answer 3:

里斯Kluivers的答案斯威夫特3:

CATransaction.begin()
CATransaction.setDisableActions(true)

let animation = CATransition()
animation.type = kCATransitionFade
self.navigationController?.view.layer.add(animation, forKey: "someAnimation")
_ = self.navigationController?.popViewController(animated: false)

CATransaction.commit()


文章来源: popViewControllerAnimated: custom transition animation?