2009-10-14 85 views
8

我現在在一定的條件下使用核心動畫動畫按鈕我想停止該動畫如何停止動畫?如何停止核心動畫?

這裏是動畫按鈕

-(void)animateButton:(UIButton *)btnName 
{ 
    CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
    pulseAnimation.duration = .5; 
    pulseAnimation.toValue = [NSNumber numberWithFloat:1.1]; 
    pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    pulseAnimation.autoreverses = YES; 
    pulseAnimation.repeatCount = FLT_MAX; 

    [btnName.layer addAnimation:pulseAnimation forKey:nil]; 
} 
+1

在第一次掃描時,我以爲這個問題是「如何停止火化」:-) – 2009-10-14 14:20:20

+0

對不起!忘記空間 – 2009-10-14 14:22:54

回答

22

Core Animation Programming Guide

啓動和停止顯式動畫

您通過發送addAnimation開始明確動畫的方法:forKey:消息傳送到目標層,將動畫和標識符作爲參數傳遞。一旦添加到目標圖層,顯式動畫將運行,直到動畫完成,或從圖層中刪除。 用於向圖層添加動畫的標識符也用於通過調用removeAnimationForKey:來停止它。您可以通過向圖層發送removeAllAnimations消息來停止圖層的所有動畫。

7

正如nall指出的那樣,您只需要爲您的動畫(字符串等)分配一個鍵,然後在您的圖層上使用-removeAnimationForKey:來移除該特定的動畫。

但是,如果您這樣做,圖層應該恢復到其預先動畫狀態。要使圖層在動畫屬性保留其當前值的情況下停止,您需要執行我在this answer中描述的操作:獲取動畫圖層的presentationLayer,讀取動畫屬性的當前值,將該值設置爲動畫圖層,然後才能刪除動畫。