02 基本动画的介绍

1、创建一个最基本的动画,然后往y轴做一个移动,

当执行动画的时候,真正移动的不是layer本身,而是Presentation Tree,当动画移动的时候,会把原始涂层隐藏,动画完成后,就会把Presentation图层移除,原始涂层就会显示,所以动画会恢复成原来的状态

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

    // 创建动画

    CABasicAnimation *baseAnimation = [CABasicAnimation animation];

    // 设置动画的移动方向

    baseAnimation.keyPath = @"position.y";

    // 设置动画的移动距离

    baseAnimation.toValue = @400;

    // 设置动画的移动时间

    baseAnimation.duration = 1;

    // 把动画添加到layer上面

    [_redView.layer addAnimation:baseAnimation forKey:nil];

}

2、动画结束之后,停留在移动后的位置

    // 创建动画
    CABasicAnimation *baseAnimation = [CABasicAnimation animation];
    // 设置动画的移动方向
    baseAnimation.keyPath = @"position.y";
    // 设置动画的移动距离
    baseAnimation.toValue = @400;
    // 设置动画的移动时间
    baseAnimation.duration = 1;
    
    //是否在动画结束后将其移除
    baseAnimation.removedOnCompletion = NO;
    
    // 设置layer最后的位置状态
    /**
     * kCAFillModeForwards :动画结束后,layer会一直保持动画的最后状态
     * kCAFillModeBackwards :动画开始前,会马上显示第一帧的动画,然后等动画执行完后,layer会一直保持动画的最后状态
     * kCAFillModeBoth: kCAFillModeForwards & kCAFillModeBackwards
     * kCAFillModeRemoved: 默认,动画结束后,layer会回到原来的状态
     */
    baseAnimation.fillMode = kCAFillModeForwards;
    
    // 把动画添加到layer上面
    [_redView.layer addAnimation:baseAnimation forKey:nil];

3、隐式动画的控制-修改背景颜色添加动画效果

  [CATransaction begin];
// 设置动画时间
  [CATransaction setAnimationDuration:1];
  _layer.backgroundColor = [UIColor yellowColor].CGColor;
  [CATransaction commit];
发布了79 篇原创文章 · 获赞 42 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/s12117719679/article/details/88855532