抽屜效果里面重疊 VC 涉及到的動畫效果!!
首先講一下幾種動畫效果(科普)
-
從左至右分別列出了 Spring Animation, Ease-Out Animation 和 Linear Animation 的動畫效果:
spring-1.gif
介紹函數(普通動畫和這個函數就是3,4個參數不同)
+ (void)animateWithDuration:(NSTimeInterval)duration
delay:(NSTimeInterval)delay
usingSpringWithDamping:(CGFloat)dampingRatio
initialSpringVelocity:(CGFloat)velocity
options:(UIViewAnimationOptions)options
animations:(void (^)(void))animations
completion:(void (^)(BOOL finished))completion
- (NSTimeInterval)duration —— 動畫時間
- (NSTimeInterval)delay —— 延時幾秒后開始執行動畫
- Spring Animation 的 API 和一般動畫相比多了兩個參數,分別是
usingSpringWithDamping
和initialSpringVelocity
-
usingSpringWithDamping 參數
usingSpringWithDamping的范圍為0.0f到1.0f,數值越小「彈簧」的振動效果越明顯。下圖演示了在initialSpringVelocity為0.0f的情況下,usingSpringWithDamping分別取0.2f,0.5f和1.0f的情況,如下圖
tutu - initialSpringVelocity 參數
initialSpringVelocity則表示初始的速度,數值越大一開始移動越快。下圖演示了在usingSpringWithDamping
為1.0f時,initialSpringVelocity
分別取5.0f,15.0f和25.0f的情況。值得注意的是,初始速度取值較高而時間較短時,也會出現反彈情況
ttt
-
- options —— 為動畫執行的選項,如下:
||
|:|
| UIViewAnimationOptionLayoutSubviews | 提交動畫的時候布局子控件,表示子控件將和父控件一同動畫 |
| UIViewAnimationOptionAllowUserInteraction | 動畫時允許用戶交流,比如觸摸 |
| UIViewAnimationOptionBeginFromCurrentState | 從當前狀態開始動畫 |
| UIViewAnimationOptionRepeat | 動畫無限重復 |
| UIViewAnimationOptionAutoreverse | 執行動畫回路,前提是設置動畫無限重復 |
| UIViewAnimationOptionOverrideInheritedDuration | 忽略外層動畫嵌套的執行時間 |
| UIViewAnimationOptionOverrideInheritedCurve | 忽略外層動畫嵌套的時間變化曲線 |
| UIViewAnimationOptionAllowAnimatedContent | 通過改變屬性和重繪實現動畫效果,如果key沒有提交動畫將使用快照|
| UIViewAnimationOptionShowHideTransitionViews | 用顯隱的方式替代添加移除圖層的動畫效果|
| UIViewAnimationOptionOverrideInheritedOptions | 忽略嵌套繼承的選項|
| 時間函數曲線相關||
|:|
| UIViewAnimationOptionCurveEaseInOut | 時間曲線函數,由慢到快|
| UIViewAnimationOptionCurveEaseIn | 時間曲線函數,由慢到特別快 |
| UIViewAnimationOptionCurveEaseOut | 時間曲線函數,由快到慢 |
| UIViewAnimationOptionCurveLinear | 時間曲線函數,勻速 |
|轉場動畫相關的 ||
|:|
| UIViewAnimationOptionTransitionNone | 無轉場動畫 |
| UIViewAnimationOptionTransitionFlipFromLeft | 轉場從左翻轉 |
| UIViewAnimationOptionTransitionFlipFromRight | 轉場從右翻轉 |
| UIViewAnimationOptionTransitionCurlUp | 上卷轉場 |
| UIViewAnimationOptionTransitionCurlDown | 下卷轉場 |
| UIViewAnimationOptionTransitionCrossDissolve | 轉場交叉消失 |
| UIViewAnimationOptionTransitionFlipFromTop | 轉場從上翻轉 |
| UIViewAnimationOptionTransitionFlipFromBottom | 轉場從下翻轉 |
- completion —— 為動畫執行完畢以后執行的代碼塊
- animations —— 動畫效果的代碼塊(動畫結束以后的效果)