IOS動畫學習
UIView簡單動畫
//開始一個動畫塊
[UIView beginAnimations:@"View1" context:nil];
//設定是否啟用動畫
[UIView setAnimationsEnabled:YES];
//設定在動畫塊內部動畫屬性改變開始的時間
[UIView setAnimationStartDate:(NSDate*)startTime];
//設定動畫塊中的動畫持續時間(用秒)
[UIView setAnimationDuration:0.5];
//設定動畫塊中的動畫屬性變化的曲線
//UIViewAnimationCurveEaseInOut 開始和結束時動畫效果比較慢
//UIViewAnimationCurveEaseIn 開始動畫效果比較慢
//UIViewAnimationCurveEaseOut 結束動畫效果比較慢
//UIViewAnimationCurveLinear 平滑的動畫效果
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
//設定動畫塊中的動畫效果是否自動重複播放
[UIView setAnimationRepeatAutoreverses:NO];
//設定動畫在動畫模組中的重複次數
[UIView setAnimationRepeatCount:5];
//設定動畫從當前狀態開始
[UIView setAnimationBeginsFromCurrentState:YES];
//設定動畫訊息的代理
[UIView setAnimationDelegate:self];
//設定訊息給動畫代理當動畫開始的時候
[UIView setAnimationWillStartSelector:@selector(resizeAnimationWillStart:context)];
//設定訊息給動畫代理當動畫停止的時候
[UIView setAnimationDidStopSelector:@selector(resizeAnimationDidStop:finished:context)];
//在動畫塊中為檢視設定過渡
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
//顯示在最前面
[self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
//結束動畫
[UIView commitAnimations];
頁面之間的過度主要依靠UIView setAnimationTransition: forView:cache: 這個方法以及exchangeSubviewAtIndex:withSubviewAtIndex:
前者通過UIView靜態方法設定過度的動畫種類,後者實現真正的過度函式掉用.種類有如下五種:
typedef enum {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;
一個捲入卷出的小例子
if (tag == 0) {
//在動畫塊中為檢視設定過渡
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:viewOne cache:YES];
viewOne.hidden = YES;
}else {
//在動畫塊中為檢視設定過渡
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:viewOne cache:YES];
viewOne.hidden = NO;
}
*另外所有的CGAffineTransform都可以放置在動畫塊中,動畫塊會自動為仿射變化生成動畫
Core Animation
除了這種簡單的動畫方式外,其實還有一種利用QuartzCore來做過度動畫.不同的地方在於,這個過度動畫作用於層,換句話說,他動畫直接做用於整個UIView,而不像UIView的動畫,可以作用於UIView區域性或本身.當UIView作用與本身時,實際上也就相當於是對層的動畫了.
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:1.0f];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
[animation setType: kCATransitionMoveIn];
[animation setSubtype: kCATransitionFromBottom];
[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[[[self superview] layer] addAnimation:animation forKey:@"transitionViewAnimation"];
setDuration:和UIView中的動畫效果一樣,持續時間.
setTimingFunction:是動畫的種類,和UIView一樣,比如勻速動畫,快速開始結束等.
setType:是指定動畫的型別,他有:
- kCATransitionFade (淡入淡出來補給動畫)
- kCATransitionMoveIn(從一個方向覆蓋的方式來補給動畫)
- kCATransitionPush(推送的方式來補給動畫)
- kCATransitionReveal(一個試圖展現出另外另外一個試圖的方式)
當除了第一種方式外(淡入淡出),可以通過setSubType:來制定動畫的方向(因為這些動畫都是直接著用於層的,所以相當於只有試圖間的切換過渡).動畫方向有4個:
- kCATransitionFromRight
- kCATransitionFromLeft
- kCATransitionFromTop
- kCATransitionFromBottom
相關文章
- 系統學習iOS動畫之一:檢視動畫iOS動畫
- 系統學習iOS動畫之三:圖層動畫iOS動畫
- iOS學習筆記-動畫篇1iOS筆記動畫
- 系統學習iOS動畫之六:3D動畫iOS動畫3D
- 系統學習iOS動畫之七:其它型別的動畫iOS動畫型別
- 系統學習iOS動畫之五:使用UIViewPropertyAnimatoriOS動畫UIView
- iOS 動畫詳解(學習動畫看這一篇就夠了)iOS動畫
- 系統學習iOS動畫之二:自動佈局iOS動畫
- 系統學習iOS動畫之四:檢視控制器的轉場動畫iOS動畫
- 系統學習iOS動畫之零:說明和目錄iOS動畫
- ios開發學習–動畫(Animation)效果原始碼分享–系列教程1iOS動畫原始碼
- iOS學習iOS
- 學習iOSiOS
- iOS 動畫iOS動畫
- iOS動畫-按鈕動畫iOS動畫
- iOS 動畫-定時器動畫iOS動畫定時器
- Android 補間動畫學習Android動畫
- QT學習筆記4(動畫)QT筆記動畫
- Android過渡動畫學習Android動畫
- iOS SDWebImage 學習iOSWeb
- IOS學習(0)iOS
- IOS動畫使用iOS動畫
- iOS動畫——ViewAnimationsiOS動畫View
- iOS動畫實戰之Lottie動畫iOS動畫
- 學習 PixiJS — 補間動畫JS動畫
- 學習 PixiJS — 動畫精靈JS動畫
- Android學習之 屬性動畫Android動畫
- iOS 動畫之Spring動畫、Block動畫、GIF圖iOS動畫SpringBloC
- React Native學習實踐:動畫初探之載入動畫React Native動畫
- iOS-Blocks學習iOSBloC
- IOS學習計劃iOS
- Vue學習筆記(二)------axios學習Vue筆記iOS
- iOS 動畫技巧 (一)iOS動畫
- iOS UIView基本動畫iOSUIView動畫
- iOS動畫全面解析iOS動畫
- iOS 按鈕動畫iOS動畫
- iOS 動畫筆記iOS動畫筆記
- iOS UIView層動畫iOSUIView動畫