2012-10-19 98 views
2

我有一個將歷史記錄中的用戶事件存儲的應用程序。這些事件添加到一個控制器中,並顯示在不同選項卡中的控制器中。沿着二次曲線設置視圖的動畫中心點

我想添加一個視覺確認,當用戶點擊「保存按鈕」時記錄了一個事件。我正在考慮將界面元素動畫化,以便向負責向用戶顯示記錄的選項卡欄控制器移動。

Animation curve

爲了做到這一點,我想我的動畫界面元素之一的中心點。我知道如何對中心點進行動畫處理,但它是以一條直線進行的。 如何以更「彎曲」的方式爲中心點製作動畫?有沒有辦法做到這一點?

CGPoint center = self.ratingReticle.center; 

[UIView animateWithDuration:0.6 delay:0 options:UIViewAnimationCurveEaseIn animations:^{ 
    //move the element offscreen 
    self.ratingReticle.center = CGPointMake(260,500); 

} completion:^(BOOL finished) { 
    //hide the interace element once it is offscreen 
    self.ratingReticle.alpha = 0; 
    //restore the position of the interface element 
    self.ratingReticle.center = center; 

    [ UIView animateWithDuration:0.4 animations:^{ 
     //fade the element back at the original position 
     self.ratingReticle.alpha = 1; 
    } completion:^(BOOL finished) { 

    }]; 

}]; 

回答

5

您可以使用核心動畫使用CAKeyFrameAnimation沿着貝塞爾曲線移動您的對象。

-(void)animate 
{ 
    CAKeyframeAnimation *posAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
    posAnim.path = [self bezierPath]; 
    [image.layer addAnimation:posAnim forKey:@"posAnim"]; 
} 

其中bezierPath返回CGPathRef適合你的情況。

+0

工作正常,但只是想知道,我該如何改變動畫的持續時間? – Gonzo

+1

@CEAFDC:'posAnim.duration = what_you_want_in_seconds;'(持續時間是CAAnimation採用的CAMediaTiming協議的一部分)。 – sergio