4

我正在学习另一种创建自定义指标的方法。下面是使用 CABasicAnimation 完成任务的教程的部分代码。

-(void)spin
{
    CABasicAnimation *spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
    spinAnimation.toValue           = [NSNumber numberWithFloat:2*M_PI];
    spinAnimation.duration          = self.animationDuration;
    spinAnimation.delegate          = self;
    [self.layer addAnimation:spinAnimation forKey:@"spinAnimation"];
}

第 2 行的toValue是什么以及它的用途。当我尝试使用

spinAnimation.byValue = [NSNumber numberWithFloat:2*M_PI];

我不明白这些插值值。正在互联网上搜索,但仍然无法获得它的全貌。如果您对此有任何想法,请提供帮助。感谢所有评论。

4

2 回答 2

4

CABasicAnimations 可能有点难以理解,但与动画相关的属性真的不是那么难,一旦你可以想象它们试图完成的事情。例如,如果我有一个代表图层的红色方块,并且我想将它旋转 360°(就像你在那里所做的那样),那么我必须初始化一个动画对象,告诉它我想要动画什么,以及在哪里我想让动画去。

您提供的动画改变了 CALayer 的内部矩阵,使其在给定的持续时间内2 * M_PI从当前位置(因为您没有指定 a )旋转到给定的值(在本例中为 或 360˚) 。fromValue一个给定的值告诉动画,在给定的时间段内,您希望动画在给定的持续时间内插入(或移动)定的值(例如,您可以通过指定将动画分成 45˚“块”一个byValue@(M_PI/2)。默认的 byValue 是动画持续时间和动画持续时间之差的除法,以toValue使fromValue动画平滑连续。

在此处输入图像描述

因此,您可以将动画视为层的初始旋转层的新旋转通过在一段时间内插入给定的数量或值。

于 2013-02-16T21:46:01.063 回答
-2

你可以理解“byValue”它的意思加上原来的值。

于 2018-07-05T07:32:23.570 回答