PresentViewController 界面切换 CATransition—转场动画

http://blog.csdn.net/ityanping/article/details/39270609

http://www.jianshu.com/p/267ba592254c  

在项目中没有创建 UINavgationController,无法使用默认的 push 方法 进行页面的跳转时。

使用另一种页面跳转方法 :一般会使用presentViewController来切换视图并携带切换时的动画,

其中切换方法如下:

– presentViewController:animated:completion: 弹出,出现一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil
– dismissViewControllerAnimated:completion:退出一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil

切换动画在压入一个新视图和弹出顶层视图均可以使用,下面只以压入视图为例。

presentModalViewController:animated:completion:使用系统自带四种动画

简单的实现方式:

[page2Controller setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];

[self presentViewController:myNextViewController animated:YES  completion:nil];

系统支持的四种动画:

typedef enum {

UIModalTransitionStyleCoverVertical=0, //默认方式,竖向上推

UIModalTransitionStyleFlipHorizontal, //水平反转

UIModalTransitionStyleCrossDissolve,//隐出隐现

UIModalTransitionStylePartialCurl,//部分翻页效果

} UIModalTransitionStyle;

常用的方法:

 //  结合控件的点击事件,例:常用的UIButton
 UIButton * button = [UIButton alloc] init];
 [button addTarget:self action:@selector(buttonClick) forControlEvents:(UIControlEventTouchUpInside)];

//   默认跳转方式,从底部推出
- (void)buttonClick {
     UIViewController * viewController = [UIViewController alloc] init];
     [self presentViewController: viewController animated:YES completion:nil];   
}

根据需求设置跳转时的样式:

- (void)buttonClick {
      CATransition * animation = [CATransition animation];

      animation.duration = 0.5;    //  时间

      /**  type:动画类型
        *  pageCurl       向上翻一页
        *  pageUnCurl     向下翻一页
        *  rippleEffect   水滴
        *  suckEffect     收缩
        *  cube           方块
        *  oglFlip        上下翻转
*
cameraIrisHollowOpen 相机打开
        * cameraIrisHollowClose 相机关闭
        */
      animation.type = @"pageCurl";

       /**  type:页面转换类型
        *  kCATransitionFade       淡出
        *  kCATransitionMoveIn     覆盖
        *  kCATransitionReveal     底部显示
        *  kCATransitionPush       推出
        */
      animation.type = kCATransitionPush;

      //PS:type 更多效果请 搜索: CATransition

      /**  subtype:出现的方向
        *  kCATransitionFromRight       右
        *  kCATransitionFromLeft        左
        *  kCATransitionFromTop         上
        *  kCATransitionFromBottom      下
        */
      animation.subtype = kCATransitionFromRight;

      [self.view.window.layer addAnimation:animation forKey:nil];                   //  添加动作
      [self presentViewController: viewController animated:YES completion:nil];     //  跳转
  }

 //  PS:设置 type 属性时,两种写法

 

posted @ 2016-07-28 10:21  Ruby_c  阅读(812)  评论(0编辑  收藏  举报