UIView
可以設置動畫的屬性:
frame
視圖的尺寸和位置
bounds
視圖的尺寸
center
視圖的位置
transform
翻轉或者縮放視圖
alpha
視圖的透明度
backgroundColor
視圖的背景顏色
contentStretch
視圖內容如何拉伸
- 開始動畫
參數animationID
蹬刷,動畫內部應用程序標識用來傳遞給動畫代理消息铭污。
參數context
,附加的應用程序信息用來傳遞給動畫代理消息。
調用setAnimationWillStartSelector:
來使用窖铡。
寫個方法包含這兩參數诱桂,在方法里就可以使用設置的兩參數了秸妥。
- (void)animationWillStart:(NSString *)animationID context:(void *)context
調用setAnimationDidStopSelector:
來使用焰宣,三個參數七蜘。
- (void)animationFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context
+ (void)beginAnimations:(NSString *)animationID context:(void *)context; - 結束動畫
+ (void)commitAnimations;
所有動畫設置方法谭溉,都是beginAnimations
開始commitAnimations
結束的動畫,在動畫外面和代碼塊設置的動畫無效橡卤。 - 設置動畫消息代理
+ (void)setAnimationDelegate:(id)delegate; - 設置接收代理消息的對象扮念。動畫將要開始時調用
+ (void)setAnimationWillStartSelector:(SEL)selector; - 設置接收代理消息的對象。動畫已經停止時調用
+ (void)setAnimationDidStopSelector:(SEL)selector; - 設置動畫持續(xù)時間碧库。默認
0.2
秒
+ (void)setAnimationDuration:(NSTimeInterval)duration; - 設置動畫延遲時間柜与。默認
0.0
秒
+ (void)setAnimationDelay:(NSTimeInterval)delay; - 設置動畫開始時間巧勤。默認是
now
+ (void)setAnimationStartDate:(NSDate *)startDate; - 設置動畫變化曲線。默認是淡入淡出
+ (void)setAnimationCurve:(UIViewAnimationCurve)curve;
變化曲線的效果:
typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
UIViewAnimationCurveEaseInOut, //淡入淡出
UIViewAnimationCurveEaseIn, //開始慢
UIViewAnimationCurveEaseOut, //結束慢
UIViewAnimationCurveLinear //線性的
}; - 設置動畫重復次數弄匕。默認是
0.0
颅悉,可以是小數
+ (void)setAnimationRepeatCount:(float)repeatCount; - 設置動畫是否自動重復播放
參數repeatAutoreverses
,如果動畫自動重復就是YES
否則NO
迁匠。默認是NO
使用setAnimationRepeatCount:
方法來指定動畫重復次數签舞。如果重復次數為0將沒有任何效果。
+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses; - 設置動畫從當前狀態(tài)開始播放柒瓣。
參數fromCurrentState
儒搭,如果動畫需要從他們當前狀態(tài)開始播放是YES
。否則為NO
芙贫。默認是NO
如果設置為YES
那么當動畫在運行過程中搂鲫,當前視圖的位置將會作為新的動畫的開始狀態(tài)。如果設置為NO
磺平,當前動畫結束前新動畫將使用視圖最后狀態(tài)的位置作為開始狀態(tài)魂仍。
+ (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState; - 設置動畫類型
參數transition
,把一個過渡效果應用到視圖中拣挪。
參數view
擦酌,需要過渡的視圖對象。
參數cache
菠劝,如果是YES
赊舶,那么在開始和結束圖片視圖渲染一次并在動畫中創(chuàng)建幀,否則視圖將會在每一幀都渲染赶诊。例如緩存笼平,你不需要在視圖轉變中不停的更新,你只需要等到轉換完成再去更新視圖舔痪。
+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache;
動畫效果:
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone, 沒有動畫效果
UIViewAnimationTransitionFlipFromLeft, 從左向右旋轉翻頁
UIViewAnimationTransitionFlipFromRight, 從右向左旋轉翻頁
UIViewAnimationTransitionCurlUp, 卷曲翻頁寓调,從下往上
UIViewAnimationTransitionCurlDown, 卷曲翻頁,從上往下
}; - 設置是否激活動畫
參數enabled
锄码,如果是YES
那就激活動畫夺英,否則NO
。默認是YES
+ (void)setAnimationsEnabled:(BOOL)enabled; - 返回一個布爾值表示動畫是否結束滋捶。如果動畫結束返回
YES
痛悯,否則NO
。
+ (BOOL)areAnimationsEnabled; - 可以強制一些動作不使用動畫
它是一個簡單的封裝炬太,先檢查動畫當前是否啟用灸蟆,然后禁止動畫,執(zhí)行塊語句亲族,最后重新啟用動畫炒考。一個需要說明的地方是,它并不會阻塞基于CoreAnimation
的動畫霎迫。iOS7的新方法
+ (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation NS_AVAILABLE_IOS(7_0);