iOS核心动画(CoreAnimation)之CABasicAn

2018-04-19  本文已影响13人  HarveyCC

了解CoreAnimation

CABasicAnimation使用

CoreAnimation包含了许多的高级动画效果,CABasicAnimation只是其中一小部分,也是最基础动画.
CABasicAnimation的常用属性详解

类型 描述
kCAMediaTimingFunctionLinear 均速(线性运行)
kCAMediaTimingFunctionEaseIn 先缓慢进入,再加速离开
kCAMediaTimingFunctionEaseOut 全速开始,慢慢减速
kCAMediaTimingFunctionEaseInEaseOut 先慢慢加速,再慢慢减速。
kCAMediaTimingFunctionDefault 默认值.先慢慢加速,再慢慢减速,但是它加速减速速度略慢
类型 描述
kCAFillModeForwards 在动画开始前,只需要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始
kCAFillModeBackwards 当动画结束后,layer会一直保持着动画最后的状态
kCAFillModeBoth 动画加入之后在开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态
kCAFillModeRemoved 默认值.动画结束后,不改变layer的状态,layer会恢复到之前的状态

动画实现

- (void)myAnimation {
    
    NSString *keyPath = @"position";
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:keyPath];
    
    // 速度控制函数,控制动画运行的节奏
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    
    // YES=启用回退动画,即由toValue到fromValue做回退动画
    animation.autoreverses = YES;
    
    // YES=动画结束时从layer移除
    animation.removedOnCompletion = YES;
    
    // 控制动画开始之前或者动画结束之后`layer`的行为
    animation.fillMode = kCAFillModeForwards;

    // 动画初始值(状态),必须设置
    animation.fromValue = [NSValue valueWithCGPoint:self.interactView.center];

    // 动画结束值(状态),必须设置
    animation.toValue = [NSValue valueWithCGPoint:self.targetView.center];
    
    // 重复次数
    animation.repeatCount = INT_MAX;
 
    // 每次动画时间,必须设置
    animation.duration = 1.8;
    
    // 添加到layer,并开始动;必须设置
    [arrowView.layer addAnimation:animation forKey:keyPath];
}

上面代码的动画效果

image

KeyPath 列表

Apple官方链接:CALayer Animatable Properties


注意: CoreAnimation是作用于layer,layer并没有frame属性,所以对frame是无效的,可通过positionbounds间接实现

上一篇下一篇

猜你喜欢

热点阅读