2009-02-16 26 views
3

如何使用兩個單獨的CABasicAnimations同時爲同一屬性設置動畫?在單個屬性上結合動畫

例如兩個CABasicAnimations,兩個動畫position.y。

第一動畫將是一個反彈(從100至300,持續時間= 1時,自動翻轉=是,repeatcount = 10)

第二動畫將是一個緩慢滾動(100,持續時間= 10)

我看到的行爲是,如果第一個動畫正在進行&我用:

[pickle.layer addAnimation:[self makescrollanimation] forKey:@"scrollit"]; 

添加第二個......第二個被忽略。

我知道第二個動畫作品,因爲如果我從第二個開始,那麼第一個被忽略。

謝謝你 - 馬特

回答

5

如果我理解正確,您希望視圖在上下彈跳的同時整個彈跳動作緩慢向下移動。你可以通過使用動畫添加屬性來製作動畫添加。例如:

CABasicAnimation *bounceAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"]; 
bounceAnimation.duration = 1; 
bounceAnimation.fromValue = [NSNumber numberWithInt:100]; 
bounceAnimation.toValue = [NSNumber numberWithInt:300]; 
bounceAnimation.repeatCount = 10; 
bounceAnimation.autoreverses = YES; 
bounceAnimation.fillMode = kCAFillModeForwards; 
bounceAnimation.removedOnCompletion = NO; 
bounceAnimation.additive = YES; 
[view.layer addAnimation:bounceAnimation forKey:@"bounceAnimation"]; 

CABasicAnimation *scrollAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"]; 
scrollAnimation.duration = 10; 
scrollAnimation.fromValue = [NSNumber numberWithInt:0]; 
scrollAnimation.toValue = [NSNumber numberWithInt:100]; 
scrollAnimation.fillMode = kCAFillModeForwards; 
scrollAnimation.removedOnCompletion = NO; 
scrollAnimation.additive = YES; 
[view.layer addAnimation:scrollAnimation forKey:@"scrollAnimation"]; 

應該完成你想要的動畫,如果我正確地讀你的問題。滾動動畫應該能夠在反彈動畫的任何時刻觸發。

+0

是的,似乎添加劑/的fromValue爲0意味着從圖層的當前位置移動到當前位置+到值。 我一直在嘗試使用「byValue」 - 但是當「byValue」與「additive」結合使用時,結果沒有任何意義。 謝謝! Matt – user67099 2009-02-18 18:22:45

0

您可以使用CAAnimationGroup如果你想在不同的特性捆綁多個動畫,但我不知道這是可能使用兩個CABasicAnimations。一次只能爲每個屬性應用一個屬性動畫。

我可以想到的一種方法是將視圖嵌套到另一個UIView中,並在封閉視圖上執行'滾動'動畫,同時繼續反彈所包含的視圖。

很想知道更好的答案!

1

我寫了一個quick summary有關如何使用添加劑動畫

總之,在設置新的模型值交易,那麼你從舊的模式值減去新模型值動畫,並且目標是NSZeroPoint ,NSZeroRect或者標識轉換。您可以通過更改動畫在飛行中獲得美麗的曲線而不是顛簸。