在曲线中移动UIImageview

时间:2014-06-18 08:21:59

标签: ios objective-c uiimageview uikit

我正在尝试添加图像并将其移动到曲线路径上。我有半圈,值为0到100.我想要移动该图像的值。

这是我的曲线进度条的图像 我想旋转该行上的指针。

如果我尝试贝塞尔曲线,我将无法发现我的指针。它将从头到尾动画。

Any help how can i animate this.? 

由于

enter image description here

1 个答案:

答案 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];
    });

这样您就可以达到理想的效果。