美文网首页
CATransition 转场动画

CATransition 转场动画

作者: 高手世界 | 来源:发表于2017-06-02 18:44 被阅读0次

今天我们来学习一下新的动画类型, 转场动画,
什么是转场动画呢?
转场动画就是从一个场景以动画的形式过渡到下一个场景,
其实专场动画还是比较简单的,
主要步骤有:

  • 创建转场动画

  • 设置转场类型

  • 设置子转场类型(可选)

  • 设置转场后的新视图并添加到图层,
    在网上看到一个利用转场做轮播图的效果感觉挺好,
    @implementation ViewController{
    UIImageView * _james;
    int _currentIndex;
    }
    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor clearColor];
    _james = [[UIImageView alloc] initWithFrame: [UIScreen mainScreen].bounds];
    _james.image = [UIImage imageNamed:@"1.jpeg"];
    [self.view addSubview:_james];

    UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc]   initWithTarget:self action:@selector(leftSwipe:)];
    [self.view addGestureRecognizer:leftSwipe];
    leftSwipe.direction=UISwipeGestureRecognizerDirectionLeft;
    UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipe:)];
    rightSwipe.direction = UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:rightSwipe]; 
    }
    - (void)leftSwipe:(UIGestureRecognizer *)gesture
    {
    NSLog(@"left");
    [self transitionAnimation:YES];   
    }
    - (void)rightSwipe:(UIGestureRecognizer *)gesture
    {NSLog(@"right");
    [self transitionAnimation:NO];  
    }
    - (void)transitionAnimation:(BOOL)isNext{
    // 创建转场动画
    CATransition *trans = [[CATransition alloc] init];
    trans.type = @"cube";
     if (isNext) {
      trans.subtype = kCATransitionFromRight;
    }else{
      trans.subtype = kCATransitionFromLeft;
    }
     // 设置时间
    trans.duration = 1.0;
    _james.image = [self getImage:isNext];
     // 把转场动画添加到 layer 上
    [_james.layer addAnimation:trans forKey:@"transition"];
    }
    - (UIImage *)getImage:(BOOL)isNext{
     if (isNext) {
      _currentIndex = (_currentIndex + 1) % 5;
    }else{
      _currentIndex = (_currentIndex - 1 + 5) % 5;
      }
     UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpeg",_currentIndex]];
    return image;
    }
    

效果图为:今天我们来学习一下新的动画类型, 转场动画,
什么是转场动画呢?
转场动画就是从一个场景以动画的形式过渡到下一个场景,
其实专场动画还是比较简单的,
主要步骤有:

  • 创建转场动画

  • 设置转场类型

  • 设置子转场类型(可选)

  • 设置转场后的新视图并添加到图层,
    在网上看到一个利用转场做轮播图的效果感觉挺好,
    @implementation ViewController{
    UIImageView * _james;
    int _currentIndex;
    }
    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor clearColor];
    _james = [[UIImageView alloc] initWithFrame: [UIScreen mainScreen].bounds];
    _james.image = [UIImage imageNamed:@"1.jpeg"];
    [self.view addSubview:_james];

    UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc]   initWithTarget:self action:@selector(leftSwipe:)];
    [self.view addGestureRecognizer:leftSwipe];
    leftSwipe.direction=UISwipeGestureRecognizerDirectionLeft;
    UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipe:)];
    rightSwipe.direction = UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:rightSwipe]; 
    }
    - (void)leftSwipe:(UIGestureRecognizer *)gesture
    {
    NSLog(@"left");
    [self transitionAnimation:YES];   
    }
    - (void)rightSwipe:(UIGestureRecognizer *)gesture
    {NSLog(@"right");
    [self transitionAnimation:NO];  
    }
    - (void)transitionAnimation:(BOOL)isNext{
    // 创建转场动画
    CATransition *trans = [[CATransition alloc] init];
    trans.type = @"cube";
     if (isNext) {
      trans.subtype = kCATransitionFromRight;
    }else{
      trans.subtype = kCATransitionFromLeft;
    }
     // 设置时间
    trans.duration = 1.0;
    _james.image = [self getImage:isNext];
     // 把转场动画添加到 layer 上
    [_james.layer addAnimation:trans forKey:@"transition"];
    }
    - (UIImage *)getImage:(BOOL)isNext{
     if (isNext) {
      _currentIndex = (_currentIndex + 1) % 5;
    }else{
      _currentIndex = (_currentIndex - 1 + 5) % 5;
      }
     UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpeg",_currentIndex]];
    return image;
    }
    

效果图为:


轮播动画.gif

相关文章

  • 核心动画(三)

    转场动画 一、CATransition简介 CATransition是CAAnimation的子类,用于做转场动画...

  • CATransition

    CATransition 父类是CAAnimation 转场动画——CATransition CATransiti...

  • iOS转场动画的三种方式

    1.CATransition CATransition是CAAnimation的子类,用于过渡动画或转场动画。为视...

  • iOS转场动画的三种方式

    1.CATransition CATransition是CAAnimation的子类,用于过渡动画或转场动画。为视...

  • iOS开发之转场动画

    CATransition是CAAnimationd的子类。 CATransition的type属性是转场动画类型:...

  • OC_转场动画的工具类(无交互)

    转场动画的学习 请看简书iOS CAAnimation之CATransition(自定义转场动画) 一、思路 . ...

  • OC_转场动画的工具类(无交互)

    转场动画的学习 请看简书iOS CAAnimation之CATransition(自定义转场动画) 一、思路 . ...

  • CATransition转场动画

    简介 CATransition又称转场动画,是CAAnimation的子类,可以直接使用 转场动画主要用于为图层提...

  • CATransition 转场动画

    做项目的时候,想加一点稍微炫酷一点的转场方式,就用上了。 CATransition *myTransition=[...

  • 转场动画CATransition

    转场动画就是从一个场景以动画的形式过渡到另一个场景 步骤: 1.创建转场动 2.设置转场类型、子类型(可选)及其他...

网友评论

      本文标题:CATransition 转场动画

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