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動畫
- UIView中與AutoLayout相關的幾個方法對比UIView
- iOS動畫專題·UIView二維形變動畫與CAAnimation核心動畫(transform動畫,基礎,關鍵幀,組動畫,路徑動畫,貝塞爾曲線)iOS動畫UIViewORM
- 反射相關API反射API
- Flutter學習(六) 動畫以及動效相關Flutter動畫
- iOS 【如何解決 UIView 在佈局時的"詭異"動畫效果】iOSUIView動畫
- GitLab 相關 API 使用GitlabAPI
- 音樂相關apiAPI
- iOS 中 UIView 和 CALayer 的關係iOSUIView
- 畫架構圖相關架構
- Flutter - 動畫 API 梳理Flutter動畫API
- D3佈局的相關apiAPI
- 理解socket.io(一)---相關的APIAPI
- Windows API 程式相關筆記WindowsAPI筆記
- Flutter - 內建動畫 APIFlutter動畫API
- Spring中AOP相關的API及原始碼解析SpringAPI原始碼
- HTML5動畫API—— requestAnimationFrameHTML動畫APIrequestAnimationFrame
- react-redux/redux相關API,用法原理ReactReduxAPI
- webrtc原理及相關api使用邏輯WebAPI
- 大小寫相關API(tolower, toupper, islower, isupper)API
- Win32 API CreateCompatibleDC 函式的相關應用Win32API函式
- 原生JS中DOM節點相關API合集JSAPI
- 搭建vue3版taro以及相關apiVueAPI
- SpringBoot(一)啟動相關Spring Boot
- 動態連結的相關結構
- Angular(2+)動畫API用法詳解Angular動畫API
- 關於緩動動畫函式的封裝動畫函式封裝
- iOS 關鍵幀動畫iOS動畫
- 有關動態規劃的相關優化思想動態規劃優化
- 有關 animation 動畫你要知道的動畫
- OceanBase學習之路10|C 相關 API 介紹API
- 在Flask中構建API介面的相關概念FlaskAPI
- MyBatis框架的使用解析!資料庫相關API的基本介紹MyBatis框架資料庫API
- 查漏補缺,盤點和toggle相關的幾個APIAPI
- 硬核 - Java 隨機數相關 API 的演進與思考(上)Java隨機API
- js利用H5的requestAnimationFrame()API實現動畫效果JSH5requestAnimationFrameAPI動畫
- java多執行緒核心api以及相關概念(一)Java執行緒API
- 惡意軟體開發——記憶體相關API記憶體API
- API安全閘道器之視覺化相關科普API視覺化