我正在尝试添加图像并将其移动到曲线路径上。我有半圈,值为0到100.我想要移动该图像的值。
这是我的曲线进度条的图像 我想旋转该行上的指针。
如果我尝试贝塞尔曲线,我将无法发现我的指针。它将从头到尾动画。
Any help how can i animate this.?
由于
答案 0 :(得分:1)
使用以下代码片段制作半圈路径。用您需要使用的针更换旋转按钮,并提供移动针的角度。我正在将此代码用于速度计。希望这对你有所帮助。
- (void)spinButton : (UIView *)button : (float)angle
{
button.layer.anchorPoint = CGPointMake(0.5, 0.5);
CABasicAnimation *animation;
animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
// just for testing
// angle +=200;
if(angle >=360){angle = 360;}
animation.fromValue = [NSNumber numberWithFloat:lastAngle];
float m = angle/2 * (M_PI/180 );
animation.toValue = [NSNumber numberWithFloat:(m)];
// [CATransaction setValue:[NSNumber numberWithFloat:1.0] forKey:kCATransactionAnimationDuration];
lastAngle = m;
// animation.duration = 1.0f;
// to stop animation at last frame
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
animation.autoreverses = NO;
[button.layer addAnimation:animation forKey:@"rotationAnimation"];
[CATransaction begin];
// [CATransaction commit];
}
你可以这样调用这个函数:
[self spinButton:btn :0];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self spinButton:btn :50];
});
这样您就可以达到理想的效果。