Iphone 努力理解toValue、Cabasicanization的byValue、ios

Iphone 努力理解toValue、Cabasicanization的byValue、ios,iphone,ios,objective-c,core-animation,cabasicanimation,Iphone,Ios,Objective C,Core Animation,Cabasicanimation,我正在学习一种创建自定义指示器的不同方法。下面是教程中使用CABasicAnimation实现任务的部分代码 -(void)spin { CABasicAnimation *spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; spinAnimation.toValue = [NSNumber numberWithFloat:2*M_PI]; spi

我正在学习一种创建自定义指示器的不同方法。下面是教程中使用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]

我不知道这些插值值是什么。我在网上搜索过,但仍然不能得到它的全貌。。
如果你对此有任何想法,请帮忙。感谢所有评论。

CABasicAnimations可能有点难理解,但一旦你能想象出它们试图实现的目标,与动画相关的属性就没有那么难理解了。例如,如果我有一个代表一个层的红方块,我想将它旋转360度(就像你在那里做的那样),那么我必须初始化一个动画对象,告诉它我想制作什么动画,以及我想动画去哪里

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


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

您可以理解“byValue”它的平均值加上原始值。

To和By是一种范围。例如:如果你使用动画来表示“不透明度”,那么它可能在0.0到1.0之间(为了显示类似于淡入效果的动画)。非常清楚的解释。你刚刚救了我一天。顺便问一下,你能给我上面图片的参考资料吗?@ttran我是用powerpoint画的。。。您可以将其保存到桌面以备将来参考,或者直接将imgur链接复制到pic,因此,考虑到非常简单的问题,对于此循环,我认为应该添加spinAnimation.fromValue=[NSNumber numberWithFloat:0];spinAnimation.toValue=[NSNumber numberWithFloat:2*M_PI];。如果我做错了,请纠正我。请测试一下。我会省略fromValue以保持事物的隐含性。核心动画应该知道该做什么。我尝试了一个使用:byValue=NSNumber(double:M_PI/4.0)和toValue=NSNumber(double:M_PI*2.0)的动画。我希望它能在8个块中进行动画,但它只是平滑地插值。我还设置了持续时间,但在动画对象上没有其他设置。怎么了?比这更微妙一点<代码>按值本身在当前表示值和该值加上
按值
之间插值
byValue
fromValue
一起在
fromValue
和(
fromValue
+
byValue
之间插值
byValue
toValue
一起在
(toValue-byValue)
toValue
之间插值。看见