UIView的動畫相關API
只記錄自己不熟悉的,具體見View Programming Guide for iOS - Animations篇
檢視屬性動畫
- setAnimationsEnabled:
預設情況下,動畫塊中所有可動畫屬性的更改都將進行動畫處理。如果你想要一部分進行動畫處理剩下的不做動畫,使用setAnimationsEnabled:方法臨時禁用動畫,做你想要的改變,然後在呼叫setAnimationsEnabled:允許動畫。可以通過呼叫類方法areAnimationsEnabled 判斷當前是否支援動畫
Tables | Are |
---|---|
setAnimationStartDate: setAnimationDelay: | 使用這兩個方法指明什麼時候開始執行,如果指明的開始時間是過去的則動畫立即執行 |
setAnimationDuration: | 使用這個方法指明動畫時間 |
setAnimationCurve: | 使用此方法設定動畫的時間曲線。 這控制動畫是在某些時間線性執行還是改變速度。 |
setAnimationRepeatCount: setAnimationRepeatAutoreverses: | 使用這些方法設定動畫重複次數以及在動畫結束時是否反轉 |
setAnimationDelegate: setAnimationWillStartSelect: setAnimationDidStopSelect: | 使用這些方法設定代理以及在動畫開始前和結束後執行相應程式碼 |
setAnimationBeginFromCurrentState: | 使用這個方法去立即結束所有之前的動畫並且在當前狀態下開始新的動畫。如果你將引數傳為NO則新的動畫將在之前的動畫結束之後再執行 |
動畫代理方法:
// This method begins the first animation.
- (IBAction)showHideView:(id)sender
{
[UIView beginAnimations:@"ShowHideView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(showHideDidStop:finished:context:)];
// Make the animatable changes.
thirdView.alpha = 0.0;
// Commit the changes and perform the animation.
[UIView commitAnimations];
}
// Called at the end of the preceding animation.
- (void)showHideDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
[UIView beginAnimations:@"ShowHideView2" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelay:1.0];
thirdView.alpha = 1.0;
[UIView commitAnimations];
}
動畫代理方法應該如下所示:
- (void)animationWillStart:(NSString *)animationID context:(void *)context;
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context;
animationID和context是在動畫塊開始方法中beginAnimations:context: 傳遞的引數,
- animationID - 應用程式提供的用於標識動畫的字串。
- context - 應用程式提供的物件用於傳遞額外的資訊給代理
setAnimationDidStopSelector:的方法有一個額外的引數——一個布林值,如果是YES則表明動畫執行完成。如果值為NO,則動畫可能被取消或者被其他動畫打斷了。
建立檢視過渡動畫
檢視過渡動畫可以隱藏在檢視層級中和新增,刪除,隱藏和展示的相關的突然改變。可以通過使用檢視過渡動畫實現以下改變:
- 改變現有檢視的可見子檢視。當你想對現有檢視做出一些小改變時使用這個選項
- 在檢視層級中替換一個檢視。當你想要改變整個或大部分螢幕檢視的時候使用這個選項
改變子檢視(iOS 4以後鼓勵使用):
- (IBAction)displayNewPage:(id)sender
{
[UIView transitionWithView:self.view
duration:1.0
options:UIViewAnimationOptionTransitionCurlUp
animations:^{
currentTextView.hidden = YES;
swapTextView.hidden = NO;
}
completion:^(BOOL finished){
// Save the old text and then swap the views.
[self saveNotes:temp];
UIView* temp = currentTextView;
currentTextView = swapTextView;
swapTextView = temp;
}];
}
使用begin/commit方法改變子檢視
[UIView beginAnimations:@"ToggleSiblings" context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[UIView setAnimationDuration:1.0];
// Make your changes
[UIView commitAnimations];
替換檢視
- (IBAction)toggleMainViews:(id)sender {
[UIView transitionFromView:(displayingPrimary ? primaryView : secondaryView)
toView:(displayingPrimary ? secondaryView : primaryView)
duration:1.0
options:(displayingPrimary ? UIViewAnimationOptionTransitionFlipFromRight :
UIViewAnimationOptionTransitionFlipFromLeft)
completion:^(BOOL finished) {
if (finished) {
displayingPrimary = !displayingPrimary;
}
}];
}
相關文章
- iOS UIView基本動畫iOSUIView動畫
- iOS UIView層動畫iOSUIView動畫
- UIView動畫簡介UIView動畫
- 動畫篇-從UIView動畫說起動畫UIView
- UIView中與AutoLayout相關的幾個方法對比UIView
- 反射相關的API反射API
- iOS自定義UIView動畫效果iOSUIView動畫
- IE相關的API (轉)API
- SparkSQL 相關APISparkSQLAPI
- 反射相關API反射API
- 優雅地書寫 UIView 動畫UIView動畫
- 音樂相關apiAPI
- iOS Swift3.0 UIView動畫詳解iOSSwiftUIView動畫
- iOS動畫專題·UIView二維形變動畫與CAAnimation核心動畫(transform動畫,基礎,關鍵幀,組動畫,路徑動畫,貝塞爾曲線)iOS動畫UIViewORM
- GitLab 相關 API 使用GitlabAPI
- D3佈局的相關apiAPI
- 理解socket.io(一)---相關的APIAPI
- Windows API 程式相關筆記WindowsAPI筆記
- 相關API學習網址API
- iOS 中 UIView 和 CALayer 的關係iOSUIView
- Akka之Source相關API總結API
- Flutter學習(六) 動畫以及動效相關Flutter動畫
- iOS 【如何解決 UIView 在佈局時的"詭異"動畫效果】iOSUIView動畫
- HBase篇--HBase操作Api和Java操作Hbase相關ApiAPIJava
- react-redux/redux相關API,用法原理ReactReduxAPI
- webrtc原理及相關api使用邏輯WebAPI
- nodeJS丶Buff使用及相關APINodeJSAPI
- 大小寫相關API(tolower, toupper, islower, isupper)API
- Spring中AOP相關的API及原始碼解析SpringAPI原始碼
- 呼叫 Rational CM API 實現 Rational ClearQuest 的相關操作API
- 原生JS中DOM節點相關API合集JSAPI
- Api函式列表——與檔案相關 (轉)API函式
- 搭建vue3版taro以及相關apiVueAPI
- Flutter - 動畫 API 梳理Flutter動畫API
- Html5多媒體相關的API---videoHTMLAPIIDE
- HTML5中與頁面顯示相關的APIHTMLAPI
- ASP.NET Web API與Owin OAuth:呼叫與使用者相關的Web APIASP.NETWebAPIOAuth
- 在Flask中構建API介面的相關概念FlaskAPI