核心动画CoreAnimation:6-CASpringAnimation弹簧动画
CASpringAnimation类是iOS9中新增的类,属于CABasicAnimation的子类,通过CASpringAnimation类可以创建具有弹簧效果的动画。
CASpringAnimation类
在CASpringAnimation类的定义中,包含了如下几个属性,我们可以通过设置这些属性来设置弹簧动画的展示效果。
- mass:质量,影响图层运动时的惯性,mass取值越大,动画的时间越长
@property CGFloat mass;
- stiffness:弹簧钢度系数,取值0~100,默认取值100
@property CGFloat stiffness;
- damping:阻尼系数,影响反弹的次数,取值大于0,默认取值10
@property CGFloat damping;
- 初始速度,默认为0
@property CGFloat initialVelocity;
- 获取反弹时的停顿时间,只读属性
@property(readonly) CFTimeInterval settlingDuration;
CASpringAnimation类动画示例
我们通过一个实际的案例,演示一下弹簧动画的效果。
- 在控制器类中添加一个CALayer类的属性,作为动画播放的layer
@interface ViewController ()
@property (nonatomic, strong) CALayer *myLayer;
@end
- 通过懒加载的方式,设置自定义layer的属性
-(CALayer *)myLayer{
if (_myLayer == nil) {
_myLayer = [CALayer layer];
_myLayer.frame = CGRectMake(140, 100, 100, 100);
_myLayer.backgroundColor = [UIColor yellowColor].CGColor;
_myLayer.borderColor = [UIColor redColor].CGColor;
_myLayer.borderWidth = 4.0;
_myLayer.cornerRadius = 2.0;
}
return _myLayer;
}
- 添加该自定义layer到控制器视图的layer上
- (void)viewDidLoad {
[super viewDidLoad];
[self.view.layer addSublayer:self.myLayer];
}
- 当点击屏幕时,播放弹簧动画。开发者可以通过修改弹簧动画的样式属性来验证弹簧动画所展示的不同效果。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//1. 实例化CASpringAnimation对象
CASpringAnimation *animation = [CASpringAnimation animation];
//2. 设置动画属性
animation.keyPath = @"transform.translation.y";
animation.fromValue = @0;
animation.toValue = @200;
animation.mass = 100;
animation.stiffness = 100;
animation.damping = 10;
animation.duration = 2.0;
//3. 添加动画对象到一个CALayer类的对象上,播放动画
[self.myLayer addAnimation:animation forKey:nil];
}
示例代码
https://github.com/99ios/14.4.6
文章发布时间为: December 15th , 2016 at 11:42 am
最后编辑时间为: September 15th , 2017 at 03:55 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 15th , 2017 at 03:55 am
本文由 99ios 创作,转载请注明出处