2011-03-30 38 views
1

我有一個模擬測量針的圖像,像一個VU表,我用下面的代碼,以使針擺動到所需的位置:添加一些隨機運動使用旋轉

needleView.layer.anchorPoint = CGPointMake(0.5, 0.5); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:5.0]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
// rotate 90 degrees of arc, in this case, from 90 degrees clockwise to 180 degrees: 
self.needleView.transform = CGAffineTransformMakeRotation(90 * M_PI/180); 

[UIView commitAnimations]; 

工作正常。 然而,我想要做的是在針頭最終停留在期望值之前添加一些來回動畫,換句話說,在針頭運動中添加一些反彈。我無法弄清楚如何做到這一點。

任何幫助表示讚賞。 LQ

回答

0

一種方法是將你的針擺動分解成塊,並在波動之間應用隨機抖動:

  1. 沿圓弧
  2. 插入+或創建的統一步驟的名單 - 抖動的步驟
  3. 提交各自的duration/steps
+0

動畫如果我添加更多self.needleView.transform ... [UIView的commitAnimations];它似乎只是做最後一步。 – 2011-03-31 03:21:34

+1

@Lauren:我會建議先建立列表並將列表傳遞給上下文對象(保留「當前」框架)。你可以使用'animationDidStop:finished:context:'委託(來自'setAnimationDelegate')。查看http://stackoverflow.com/questions/2710939/trigerring-other-animation-after-first-ending-animation-objetive-c – user7116 2011-03-31 14:25:13

+0

從我看到我只能做兩個commitAnimations,第一個在任何方法啓動第二個在animationDidStop:finished:context中 – 2011-04-02 02:14:32