美文网首页
CABasicAnimation学习

CABasicAnimation学习

作者: a2ebcc3676c1 | 来源:发表于2016-08-17 11:08 被阅读25次
  • 这里整理一下关于CABasicAnimation动画封装的思路
  • 假如我要实现一个循环渐隐渐出呼吸动画,这里可以用到opacity属性。
    • 第一级封装
- (void)moveOpacityFrom:(float)from to:(float)to useTime:(float)useTime
             timeOffset:(float)timeOffset goback:(BOOL)goback repeat:(int)repeat{
    CABasicAnimation *animation =[CABasicAnimation animationWithKeyPath:@"opacity"];
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];//匀速变化
    animation.duration = useTime;//一个周期的时间
    animation.repeatCount = repeat;//重复次数
    animation.removedOnCompletion = (repeat==1?YES:NO);//是否回到初始状态
    animation.autoreverses=goback; //是否自动回位(执行逆动画)
    animation.timeOffset = timeOffset;//延迟执行
    animation.fillMode=kCAFillModeForwards;
    animation.fromValue =  [NSNumber numberWithFloat:from];
    animation.toValue =  [NSNumber numberWithFloat:to];
    [self.layer addAnimation:animation forKey:@"moveOpacityFrom"];
}
  • 上面方法预留了from、to、useTime、timeOffset、goback、repeat等参数,基本上可以完全通过外界控制内部动画执行。
    • 第二级封装
//一次透明渐变
- (void)moveOpacityOnceFrom:(float)from to:(float)to useTime:(float)useTime{
    [self moveOpacityFrom:from to:to useTime:useTime timeOffset:0 goback:NO repeat:1];
}
//循环渐变透明
- (void)moveOpacityFrom:(float)from to:(float)to useTime:(float)useTime{
    [self moveOpacityFrom:from to:to useTime:useTime timeOffset:0 goback:YES repeat:INT_MAX_TIME];
}
  • 上面的封装是为个别参数设置了默认值,传入较少参数实现动画效果。
    • 第三级封装
- (void)moveOpacityCustomAnimation:(int)repeats{
    [self moveOpacityFrom:0.3 to:1 useTime:0.6 timeOffset:0 goback:YES repeat:repeats];//固定变化循环 repeats 次,
}
  • 上面完全就是根据需求自定义了。

相关文章

网友评论

      本文标题:CABasicAnimation学习

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