天天看点

八 iOS之 CATransition (转场动画)

CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。

动画转场类型

类型字符串 效果说明 关键字 方向
fade 交叉淡化过渡 YES
push 新视图把旧视图推出去 YES
moveIn 新视图移到旧视图上面 YES
reveal 将旧视图移开,显示下面的新视图 YES
cube 立方体翻滚效果
oglFlip 上下左右翻转效果
suckEffect 收缩效果,如一块布被抽走 NO
rippleEffect 水滴效果 NO
pageCurl 向上翻页效果
pageUnCurl 向下翻页效果
cameraIrisHollowOpen 相机镜头打开效果 NO
cameraIrisHollowClose 相机镜头关闭效果 NO

使用UIView动画函数实现转场动画

单视图

+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
           
  • 参数说明:
    • duration:动画的持续时间
    • view:需要进行转场动画的视图
    • options:转场动画的类型
    • animations:将改变视图属性的代码放在这个block中
    • completion:动画结束后,会自动调用这个block

    双视图

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion;
           
  • 参数说明:
    • duration:动画的持续时间
    • options:转场动画的类型
    • animations:将改变视图属性的代码放在这个block中
    • completion:动画结束后,会自动调用这个block

代码演示

点击屏幕切换图片

八 iOS之 CATransition (转场动画)
  • 在控制器中添加一个UIImageView
  • 核心代码 ViewController.m
#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController

static int i = ;

- (void)viewDidLoad {
    [super viewDidLoad];


}


-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{

    if (i == ) {
        i = ;
    }
    //更改图片name,用于不断切换图片,需要提前把图片命名为“1”、“2”、“3”
    NSString * strImage = [NSString stringWithFormat:@"%d",i];

    _imageView.image = [UIImage imageNamed:strImage];

    i++;


    //转场动画
    //初始化
    CATransition * anim = [CATransition animation];


    //设置动画转场类型,可以是`fade', `moveIn', `push' and `reveal'等等

    anim.type = @"cameraIrisHollowOpen";
    //动画执行周期
    anim.duration = ;

    [_imageView.layer addAnimation:anim forKey:nil];


    /*-----------我是分界线-----------------*/
    //还可以使用UIView的动画函数实现转场动画

    //单视图API
//    [UIView transitionWithView:_imageView duration:1 options:UIViewAnimationOptionTransitionCurlDown animations:^{
//        
//        NSLog(@"动画开始执行前走这里");
//        
//        
//    } completion:^(BOOL finished) {
//        
//        //动画执行完毕后的首位操作
//        NSLog(@"动画执行完毕走这里");
//        
//    }];


    //双视图API
//    这是一个便捷的视图过渡 API,在动画过程中,首先将 fromView 从父视图中删除,然后将 toView 添加,就是做了一个替换操作。
//+ (void)transitionFromView:(UIView *)fromView
//toView:(UIView *)toView
//duration:(NSTimeInterval)duration
//options:(UIViewAnimationOptions)options
//completion:(void (^ __nullable)(BOOL finished))completion;


}



@end