IOS 修改导航Push动画

1:第一步:编写一个继承NSObject的动画类YLAnimator遵循协议UIViewControllerAnimatedTransitioning

实现委托方法:

- (NSTimeInterval)transitionDuration:(id)transitionContext{ //动画时长

return 1;

}

- (void)animateTransition:(id)transitionContext   {//动画实现

      UIViewController* toViewController = [transitionContext    viewControllerForKey:UITransitionContextToViewControllerKey];

UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];

[[transitionContext containerView] addSubview:toViewController.view];

CGAffineTransform transform = CGAffineTransformIdentity;

//transform的具体实现形式

//eg   tansform = CGAffineTransformTranslate(tansform, <#CGFloat tx#>, <#CGFloat ty#>)

toViewController.view.transform = transform;

[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{

       toViewController.view.transform = CGAffineTransformIdentity;

} completion:^(BOOL finished) {

fromViewController.view.transform = CGAffineTransformIdentity;

[transitionContext completeTransition:![transitionContext transitionWasCancelled]];

}];

}

2.第二步,自定义UINavigationDelegate类 YLNavigationDelegate

实现委托方法UINavigationControllerDelegate

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

    if (operation == UINavigationControllerOperationPush )    {

           return self.animator;  //自定义的动画

     }

}

return nil;

3:第三步,修改自定义的YLNavigationController,一般继承自UINavigationController

-(instancetype)initWithRootViewController:(UIViewController *)rootViewController{

      if(self = [super initWithRootViewController:rootViewController]){

          _navDelegate = [[YLNavigationControllerDelegate alloc] init];   

        self.delegate = _navDelegate;

}

return self

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容