美文网首页
自定义UIViewController的转场动画(-)

自定义UIViewController的转场动画(-)

作者: Maggie的小蜗居 | 来源:发表于2016-08-14 21:38 被阅读108次

自定义UIViewController的转场动画

iOS7开始提供了一系列自定义ViewController转场的API

1.UIViewControllerAnimatedTransitioning协议 : 用来自定义一个非交互式的切换动画

```
- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext;

//定义动画过程
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext;

```

2.UIViewControllerContextTransitioning 协议:转场动画的上下文

```
- (UIView *)containerView; //用来控制VC切换的容器,将需要push或present进来的view加入改view

//根据key返回对应的Controller key的值:UITransitionContextToViewControllerKey or UITransitionContextFromViewControllerKey
- (UIViewController *)viewControllerForKey:(NSString *)key; 

- (void)completeTransition:(BOOL)didComplete; 

```

3.UINavigationControllerDelegate :自定义pop和push动画

```
    //返回自定义的pop或者push动画, 改动画实现了UIViewControllerAnimatedTransitioning
    - (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController 
                              animationControllerForOperation:(UINavigationControllerOperation)operation 
                                           fromViewController:(UIViewController *)fromVC 
                                             toViewController:(UIViewController *)toVC ;

```

4.UIViewCotrollerTransitioningDelegate : 自定义dismiss和present动画

```
-(id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source;

-(id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed;

```
  1. 自定义的动画需要实现UIViewControllerAnimatedTransitioning协议 ,再根据UIViewControllerContextTransitioning协议提供的方法做动画
  2. 在firstViewController里实现UIViewCotrollerTransitioningDelegate 或 UIViewCotrollerTransitioningDelegate,在对应的代理方法里返回第一步自定义的动画
    self.navigationController.delegate = self;或者 secondVc.transitioningDelegate = self;

相关文章

网友评论

      本文标题:自定义UIViewController的转场动画(-)

      本文链接:https://www.haomeiwen.com/subject/peoysttx.html