关于自定义转场动画

2016-08-10  本文已影响18人  吴冬

1. 首先被push的VC要签订 <UINavigationControllerDelegate>

2.实现协议方法- (nullable id <UINavigationControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController   animationControllerForOperation:(UINavigationControllerOperation)operation  fromViewController:(UIViewController *)fromVC  toViewController:(UIViewController *)toVC

{

   //在这里返回一个UINavigationControllerAnimatedTransitioning的实例

NSObject<UINavigationControllerAnimatedTransitioning>animated;

animated = [Animator alloc] init];

return animated;

}

3.实现Animator类

     3.1 首先Animator 遵循代理方法<UINavigationControllerAnimatedTransitioning>

     3.2 实现代理方法

          3.2.1 - (NSTimeInterval)transitionDuration: 

               (id<UINavigationControllerAnimatedTransitioning>)transitionContext

                 {

                     //动画时间 

                     return ANIMATION_TIME;

                 }

             3.2.2 - (void)animationTransition:  

                (id<UINavigationControllerAnimatedTransitioning>)transitionContext

                {

                       //transitionContext 上下文

                          UIView *container = [transitionContext containerView];

                       //获取当前VC

                         UIViewController *fromVC = [transitionContext   

                            viewControllerForKey:UITransitionContextFromViewControllerKey];

                      //获取要pop到的VC

                        UIViewController *toVC  = [transitionContext

                            viewControllerForKey:UITransitionContextToViewControllerKey];

                      //自己实现的转场动画.............

                      //结束完成转场

                      [transitionContext completeTransition:YES];

                 }


//常用到的方法

//7.0后的新方法,截取一段自定义大小的当前屏幕显示的VIEW ,可设置偏移量。 afterUpdates(个人理解:参数如果为NO,直接截取当前选中VIEW,如果为YES,会等当前选中的VIEW刷新到最新状态时候在更新)

- (UIView *)resizableSnapshotViewFromRect:(CGRect )rect  afterScreenUpdates:(BOOL)afterUpdates  withCapInsets:(UIEdgeInsets)capInsets;  NS_AVAILABLE_IOS(7_0)

           

上一篇 下一篇

猜你喜欢

热点阅读