核心动画Core Animation系列之概述和CABasicAnimation

概述

1.了解layer

Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果
Layer与view:
view:在iOS中,你能看得见摸得着的东西基本上都是UIView,view可以感受触摸等进行交互   
layer:当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示,view本身不具备显示功能

2.核心动画结构
连线代表继承关系,所有的CA动画都遵守CAMediaTiming协议
核心动画关系图
3.CAAnimation和CAPropertyAnimation 是抽象类,没有动画效果,用其子类才有动画效果

CAAnimationGroup是个动画组,可以同时进行缩放,旋转

CATransition是转场动画,界面之间跳转(切换)都可以用转场动画。   

CABasicAnimation基本动画,做一些简单效果,比如:位移、透明度、缩放、旋转、背景色等等。
CAKeyframeAnimation帧动画,做一些连续的流畅的动画.

4.CALayer重要属性,动画要基于这些重要属性

@property CGPoint position  
/*The position in the superlayer that the anchor point of the layer's*/-position在锚点指定点   
@property CGPoint anchorPoint //锚点    
@property CATransform3D transform;//形变属性

CAPropertyAnimation

CAPropertyAnimation动画包括CABasicAnimation和CAKeyframeAnimation

CABasicAnimation

属性
@property(nullable, strong) id fromValue;
@property(nullable, strong) id toValue;
@property(nullable, strong) id byValue;   

部分属性代码示例及效果图

1.位移
- (IBAction)move:(id)sender {
    CALayer *layer = _bgView.layer;
    layer.anchorPoint = CGPointMake(0, 0);//在anchor指定的点在point上,默认是中点在point指定的点上
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
    basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
    basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(250, 250)];
    basicAnimation.duration = 1.0f;//默认是0.25秒
    basicAnimation.fillMode = kCAFillModeForwards;
    basicAnimation.removedOnCompletion = NO;//不恢复原来的位置
    [layer addAnimation:basicAnimation forKey:@"positionAnimation"];

}   

位移

2.变色
- (IBAction)changeColor:(id)sender {
    CALayer *layer = _bgView.layer;
    layer.anchorPoint = CGPointMake(0, 0);//在anchor指定的点在point上,默认是中点在point指定的点上
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
    basicAnimation.fromValue = (id)[UIColor redColor].CGColor;
    basicAnimation.toValue = (id)[UIColor yellowColor].CGColor;
    basicAnimation.duration = 1.0f;
    basicAnimation.fillMode = kCAFillModeForwards;
    basicAnimation.removedOnCompletion = NO;//不恢复原来的位置
    [layer addAnimation:basicAnimation forKey:@"backgroundAnimation"];
}   

变色

3.缩放
- (IBAction)changeScale:(id)sender {
    CALayer *layer = _bgView.layer;
    layer.anchorPoint = CGPointMake(0.5, 0.5);//在anchor指定的点在point上,默认是中点在point指定的点上
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    animation.fromValue = [NSNumber numberWithDouble:1.0];
    animation.toValue = [NSNumber numberWithDouble:2.0];
    [layer addAnimation:animation forKey:@"scaleAnimation"];

}      

缩放

4.旋转
- (IBAction)rotation:(id)sender {
    CALayer *layer = _bgView.layer;
    layer.anchorPoint = CGPointMake(0.5, 0.5);
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];//绕z轴旋转
    animation.toValue = [NSNumber numberWithDouble:2*M_PI];
    animation.duration = 1.0;
    [layer addAnimation:animation forKey:@"rotationAnimation"];
}

旋转

//:关于animationWithKeyPath的说明,是layer层的属性,摘自官方文档的说明:
The CABasicAnimation class provides basic, single-keyframe animation capabilities for a layer property. You create an instance of CABasicAnimation using the inherited animationWithKeyPath: method, specifying the key path of the layer property to be animated. Animatable Properties in Core Animation Programming Guide summarize the animatable properties for CALayer and its filter properties.

查看animationWithKeyPath的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值