UIView動畫 UIKit直接將動畫整合到UIView類中,當內部的一些屬性發生改變時,UIView將為這些改變提供動畫支援.
執行動畫所需要的工作由UIView類自動完成,但仍要在希望執行動畫時通知視圖,為此需要將改變屬性的代碼放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之間
常見方法解析:
+ (void)setAnimationDelegate:(id)delegate
設定動畫代理對象,當動畫開始或者結束時會發訊息給代理對象
+ (void)setAnimationWillStartSelector:(SEL)selector
當動畫即將開始時,執行delegate對象的selector,並且把beginAnimations:context:中傳入的參數傳進selector
+ (void)setAnimationDidStopSelector:(SEL)selector
當動畫結束時,執行delegate對象的selector,並且把beginAnimations:context:中傳入的參數傳進selector
//說明需要執行動畫[UIView beginAnimations:nil context:nil];//設定動畫期間[UIView setAnimationDuration:1];//設定轉場動畫[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];//交換子視圖的位置[self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1];//提交動畫[UIView commitAnimations];
UIView動畫
+ (void)setAnimationDuration:(NSTimeInterval)duration//動畫的期間,秒為單位+ (void)setAnimationDelay:(NSTimeInterval)delay//動畫延遲delay秒後再開始+ (void)setAnimationStartDate:(NSDate *)startDate//動畫的開始時間,預設為now+ (void)setAnimationCurve:(UIViewAnimationCurve)curve//動畫的節奏控制,具體看下面的”備忘”+ (void)setAnimationRepeatCount:(float)repeatCount//動畫的重複次數+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses//如果設定為YES,代表動畫每次重複執行的效果會跟上一次相反+ (void)setAnimationTransition:(UIViewAnimationTransition)transitionforView:(UIView *)view cache:(BOOL)cache
Block動畫
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
參數解析:
duration:動畫的期間
delay:動畫延遲delay秒後開始
options:動畫的節奏控制
animations:將改變視圖屬性的代碼放在這個block中
completion:動畫結束後,會自動調用這個block
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
參數解析:
duration:動畫的期間
view:需要進行轉場動畫的視圖
options:轉場動畫的類型
animations:將改變視圖屬性的代碼放在這個block中
completion:動畫結束後,會自動調用這個block
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion
方法調用完畢後,相當於執行了下面兩句代碼:
// 添加toView到父視圖
[fromView.superview addSubview:toView];
// 把fromView從父視圖中移除
[fromView.superview removeFromSuperview];
參數解析:
duration:動畫的期間
options:轉場動畫的類型
animations:將改變視圖屬性的代碼放在這個block中
completion:動畫結束後,會自動調用這個block
UIImageView的幀動畫 UIImageView可以讓一系列的圖片在特定的時間內按順序顯示 .
相關屬性解析:
animationImages:要顯示的圖片(一個裝著UIImage的NSArray) .
animationDuration:完整地顯示一次animationImages中的所有圖片所需的時間 .
animationRepeatCount:動畫的執行次數(預設為0,代表無限迴圈)
相關方法解析:
- (void)startAnimating; 開始動畫 .
- (void)stopAnimating; 停止動畫 .
- (BOOL)isAnimating; 是否正在運行動畫.
UIActivityIndicatorView 是一個旋轉進度輪,可以用來告知使用者有一個操作進行中中,一般用initWithActivityIndicatorStyle初始化
方法解析:
- (void)startAnimating;開始動畫
- (void)stopAnimating; 停止動畫
- (BOOL)isAnimating; 是否正在運行動畫
UIActivityIndicatorViewStyle有3個值可供選擇:
UIActivityIndicatorViewStyleWhiteLarge //大型白色指標
UIActivityIndicatorViewStyleWhite //標準尺寸白色指標
UIActivityIndicatorViewStyleGray //灰色指標,用於白色背景