2014-05-01 37 views
0

所以我想做一個UI動畫,視圖漸漸淡出。現在我有類似的東西UIAnimation非線性效果

[UIView animateWithDuration:2.0f 
    animations:^{ 
     myView.alpha = 0.0f; 
    } 
]; 

所以現在在這2秒的過程中,視圖會線性漸漸淡出。不過,我想讓它淡出是非線性的。例如,我希望它慢慢淡出,然後隨着時間的推移會更快地消失。

我該怎麼做?

+0

我相信默認的時間曲線實際上是「緩解,緩解」而不是「線性」。你應該看到開始和結束比動畫的中間部分要慢 –

回答

0
[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ 
    myView.alpha = 0.0f; 
} completion:nil]; 

或者挑選自己喜歡的時間曲線,而不是UIViewAnimationOptionCurveEaseInOut

2

使用的是需要一個選項參數,如animateWithDuration:delay:options:animations:completion:較長形式的animateWithDuration方法之一。

您可以提供的選項之一是一個時序曲線,如UIViewAnimationOptionCurveEaseInOut。

您的選擇是

UIViewAnimationOptionCurveEaseInOut   = 0 << 16, 
UIViewAnimationOptionCurveEaseIn    = 1 << 16, 
UIViewAnimationOptionCurveEaseOut    = 2 << 16, 
UIViewAnimationOptionCurveLinear    = 3 << 16, 

如果你使用的不是UIView的動畫CAAnimation,您還可以使用描述所需定時功能貝塞爾曲線的控制點創建自己的自定義定時功能。然而,CAAnimation使用起來較爲複雜,文檔較少。

+0

實際上我發現Core Animation有很好的文檔記錄,例如[編程指南](https://developer.apple.com/library/ios/documentation /Cocoa/Conceptual/CoreAnimation_guide/CoreAnimationBasics/CoreAnimationBasics.html#//apple_ref/doc/uid/TP40004514-CH2-SW3)中有很多很好的信息(可能是因爲它也很長)。它只是更復雜:D –

+0

@DavidRönnqvist,文檔肯定比以前更好,更完整。 –

0

您一定需要關於動畫開始緩慢並以線性結束的時間曲線。嘗試下面的代碼,

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ 
    myView.alpha = 0.0f; 
} completion:nil]; 

請讓我知道,如果它解決了您的問題。