自定义推送动画打破默认交互式弹出动画
Posted
技术标签:
【中文标题】自定义推送动画打破默认交互式弹出动画【英文标题】:Custom push animation broking default interactive pop animation 【发布时间】:2016-12-29 09:58:34 【问题描述】:在我的导航控制器委托中,我有以下代码:
- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC
if ([toVC isKindOfClass:[ParentViewController class]])
if (operation == UINavigationControllerOperationPush)
return [(ParentViewController *)toVC pushAnimator];
return nil;
Push animator 实现如下(一些视图控制器覆盖它以实现自定义转换):
- (id<UIViewControllerAnimatedTransitioning>)pushAnimator
return nil;
但是在这个默认的交互式弹出动画被破坏之后(但是根据文档,如果这个方法返回 nil 默认动画将被使用),即使我没有为选定的视图控制器使用自定义过渡。
如何为某些屏幕带来交互式弹出手势,但带有自定义推送动画?
【问题讨论】:
你解决了吗?我有同样的问题 【参考方案1】:只需在视图控制器(或其他任何东西)上实现UIGestureRecognizerDelegate
,然后执行
navigationController?.interactivePopGestureRecognizer?.delegate = self
看起来你甚至不需要实现任何东西,但是你可能想尝试类似的东西
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool
return navigationController?.viewControllers.count ?? 0 > 1
【讨论】:
以上是关于自定义推送动画打破默认交互式弹出动画的主要内容,如果未能解决你的问题,请参考以下文章
elementUI 弹窗组件全局和局部 弹入弹出动画效果实现