2013-01-03 33 views
-1

这是我想要达到的效果:如何移动图形iOS上的弧形路径......在一米的钟面

http://mouseaddict.com/images/sample-meter.png

我有我的应用程序的静态图像,但我想向他们添加议案。

想象一下米。它有一根针在底部锁定(6点在圆形表面上),针尖从左到右旋转成弧形。圆弧(零)开始于指针朝向(大致)指向圆形钟面上的9:30位置,并且该圆弧的最上部分应该在圆形时钟的大约2:30结束,风格的脸。

我有几个图形元素1)圆形仪表面(png)和2)米针的verticaly方向png文件。我需要使针在圆弧面内以弧形图案移动。

因此,假设上述两个要求,使用动画在仪表内旋转针头的最佳方式是什么?

我看到这个:Speedometer - 但这是最​​好的方法吗?我的主要问题是,我希望针锁定在底部,只有少量的左右移动,以及事实上它几乎没有(实际上没有)文档。诸如“calculateDeviationAngle”之类的事情是无法解释的。

而且速度表似乎移动大量和这个例子是行不通的支点......(我不认为)

我想用以下命令来调用这个:

[self moveNeedleToPosition:degreeOrClockFaceNumber],并将其从当前位置移动到degreeOrClockFaceNumber之后并反弹回degreeOrClockFaceNumber

TIA

回答

0

我做了以下几点:我把图像分成了几部分。轮廓(黑色)部分,背景和针。每件作品具有相同的“足迹”(形状)。

假设theImageView是用于针(层叠在另外两个imageViews的顶部)的ImageView的,我创建了以下功能:

-(void) rotateNeedle:(UIImageView *)theImageView toAngle:(float) theAngle 
{ 
    [UIView animateWithDuration:0.5 
          delay: 0.0 
         options: UIViewAnimationOptionCurveEaseInOut 
        animations:^{ 
         theImageView.transform =CGAffineTransformMakeRotation((M_PI/180) * (theAngle + 10)); 
        } 
        completion:^(BOOL finished){ 
         // 
         [UIView animateWithDuration:0.5 
              animations:^{ 
               theImageView.transform = CGAffineTransformMakeRotation((M_PI/180) * theAngle); 
              }]; 


        }]; 

} 

在块中的第一动画执行“拍过去”部动画...即:移动10度超过实际值。完成块中的第二个动画然后将针“反弹”回正确的值。这些动画的速度创造了物理效果。它对我来说工作得很好。