Iphone 保持恒定的速度

Iphone 保持恒定的速度,iphone,objective-c,ios,ipad,uilabel,Iphone,Objective C,Ios,Ipad,Uilabel,我正在尝试创建一个简单的动画,它将始终保持恒定的速度,即使动画必须经过的距离不同。这是到目前为止我的代码,它滚动的标签大小总是不同的,但还不能保持恒定的速度。非常感谢你的帮助 CABasicAnimation *theAnimation; theAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; theAnimation.speed = 1.0f; NSNumber *fromValue

我正在尝试创建一个简单的动画,它将始终保持恒定的速度,即使动画必须经过的距离不同。这是到目前为止我的代码,它滚动的标签大小总是不同的,但还不能保持恒定的速度。非常感谢你的帮助

CABasicAnimation *theAnimation;
theAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
theAnimation.speed = 1.0f;

NSNumber *fromValue = [NSNumber numberWithFloat:self.mainLabel.frame.origin.x];
NSNumber *toValue = [NSNumber numberWithFloat:-self.mainLabel.frame.size.width - self.view.frame.size.height];
theAnimation.fromValue = fromValue;
theAnimation.toValue = toValue;
//theAnimation.duration = toValue.floatValue - fromValue.floatValue;//Not right.
theAnimation.repeatCount = 999;
theAnimation.autoreverses = NO;
[mainLabel.layer addAnimation:theAnimation forKey:@"animateLayer"];
您是否尝试添加:

 theAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
例如

 theAnimation.speed = 1.0f;   
?

此函数用于设置动画的线性速度。

是否尝试添加:

 theAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
例如

 theAnimation.speed = 1.0f;   
?


此函数设置动画的线性速度。

是的,我尝试过,但动画已经是线性的。问题是不同的标签大小会产生不同的动画速度。它将以恒定速率滚动,但当标签大小更改时,它将以不同的恒定速率滚动。这是因为动画要覆盖的距离或多或少。这是动画重新开始时,使用不同的标签+大小。可能需要用于此关键帧动画,因此设置“检查点”,在其中更改系数以保存持久动画。这是一个很好的动画例子(唯一的例子)。嗯,也许是这样,但我想我可能已经用这个
theAnimation.duration=(fromValue.floatValue-toValue.floatValue)/440实现了它看,如果您将此动画应用于不同大小的不同标签,则需要以不同的速率排列。然后检查并设置此速率,具体取决于所应用的标签。所以对于一个标签,animation.duration的值是正常的,但对于另一个标签,这个值太小或太大。是的,我尝试过,但动画已经是线性的。问题是不同的标签大小会产生不同的动画速度。它将以恒定速率滚动,但当标签大小更改时,它将以不同的恒定速率滚动。这是因为动画要覆盖的距离或多或少。这是动画重新开始时,使用不同的标签+大小。可能需要用于此关键帧动画,因此设置“检查点”,在其中更改系数以保存持久动画。这是一个很好的动画例子(唯一的例子)。嗯,也许是这样,但我想我可能已经用这个
theAnimation.duration=(fromValue.floatValue-toValue.floatValue)/440实现了它看,如果您将此动画应用于不同大小的不同标签,则需要以不同的速率排列。然后检查并设置此速率,具体取决于所应用的标签。所以对于一个标签,animation.duration的值是正常的,但对于示例中的另一个标签,这个值太小或太大。