关于转盘的一点展示

2019-07-10  本文已影响0人  Fillinse
1.gif

整个过程没什么特别需要注意的,反正就是几何到代码的转换过程,有一个点需要注意

CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
    basic.duration = _animationDuration;
    basic.fromValue = @(from);
    basic.toValue = @(to);
    basic.removedOnCompletion = NO;
    basic.delegate = self;
    basic.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];;
    [_shapeLayer addAnimation:basic forKey:@"basic"];

这段中fromValuetoValue,还有没出现的byValue,跟其他动画的值的计算有一些不同。在位移或者其他动画中,这个几个值分别代表动画的起始,终点,过程值,然后值都是直接使用的,比如从X坐标的2移动端到10,那么fromValue=@(2),toValue=@(10),都是值的直接赋予。在strokeEnd这里则不一样,他的值的范围为0-1,是一种比例。比如在我们的demo中,如果轮盘的数量从3变化到2,如果消失的是下面那块,则第一块的起点坐标不会变化,终止角度从120度到了180,那么画的时候,起点fromValue = @(1/3.0);toValue=@(0.5);这个是需要注意的,因为值一旦不对,就不会有动画。所以,一旦发现没有动画,就说明这个值产生了问题。
代码比较粗糙,有时间会整理
下载地址 https://github.com/fillinse/turnTable

上一篇 下一篇

猜你喜欢

热点阅读