2013-01-03 58 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度超過實際值。完成塊中的第二個動畫然後將針「反彈」回正確的值。這些動畫的速度創造了物理效果。它對我來說工作得很好。