轉載;
一蘸劈、簡介
一款APP的成功與否昏苏,除了完善的功能外,用戶體驗也占有極大的比重威沫,動畫的合理運用贤惯,可以很好的增強用戶體驗。iOS開發(fā)中壹甥,常用的動畫處理有UIView動畫編程和核心動畫編程救巷,其中UIView動畫使用簡便,開發(fā)中應用十分廣泛句柠。這篇博客浦译,主要討論UIView的動畫使用棒假。
二、UIView動畫的幾個方法
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations;
這個是參數(shù)最少的一個方法精盅,我們可以通過設置一個時間和block塊來完成動畫帽哑,時間參數(shù)是動畫執(zhí)行的時長,block塊中為要執(zhí)行的動畫動作叹俏,具體可以執(zhí)行那些動作妻枕,我們會在后面說。例如在1S內將view漸變透明:
[UIView?animateWithDuration:1?animations:^{
_myView.alpha=0;
}];
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations completion:(void(^)(BOOLfinished))completion;
這個函數(shù)會帶兩個block塊粘驰,用法和第一個函數(shù)相似屡谐,設置一個執(zhí)行時間和一個執(zhí)行動作,第二個block塊中可以添加一個動畫執(zhí)行結束后的動作蝌数,作為補充愕掏,例如下面代碼的效果,在1S內將view漸變?yōu)橥该鞫ド。瑒赢嫿Y束后饵撑,view在瞬間變回不透明:
[UIView?animateWithDuration:1?animations:^{
_myView.alpha=0;
}completion:^(BOOLfinished)?{????????if?(finished)?{????????????_myView.alpha=1;????????}????}];
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void(^)(void))animations completion:(void(^)(BOOLfinished))completion;
這個函數(shù)除了上面的屬性外,可以設置延時執(zhí)行唆貌,同時可以設置一個動畫效果參數(shù)滑潘,這個參數(shù)是個枚舉,它可以影響動畫的執(zhí)行效果锨咙,后面會再總結语卤。
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void(^)(void))animations completion:(void(^)(BOOLfinished))completion;
這個函數(shù)是iOS7之后的一個新函數(shù),通過這個函數(shù)蓖租,我們可以方便的制作出效果炫酷的動畫粱侣,這個函數(shù)的核心是兩個阻尼參數(shù),參數(shù)dampingRatio可以理解為彈簧效果的強弱蓖宦,設置1則沒有回彈效果,設置0則會劇烈的阻尼回彈油猫。velocity參數(shù)用于設置彈簧的初始速度稠茂。
三、UIView動畫可以操作的視圖屬性
通過上面的介紹情妖,我們了解了幾個使用動畫的函數(shù)睬关,那么那些屬性可以產生動畫效果呢?
官方文檔告訴我們這些屬性是可以通過上述方法進行動畫的:
四毡证、動畫執(zhí)行選項設置
在UIView執(zhí)行動畫的相關函數(shù)中电爹,有UIViewAnimationOptions這個參數(shù)可以對動畫的執(zhí)行效果進行設置,這個枚舉非常多料睛,可分為三部分丐箩,如下:
討論View切換的動畫操作-------轉場
兩個方法:
+ (void)transitionWithView:(UIView*)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void(^)(void))animations completion:(void(^)(BOOLfinished))completion;
通過這個方法摇邦,我們可以重繪View視圖,任何其子視圖的改變或者其自身的改變都會觸發(fā)轉場動畫的效果屎勘,?系統(tǒng)提供的轉場效果在第一篇博客中已經介紹過施籍。
這個方法常用于類似小說軟件的翻頁效果。
+ (void)transitionFromView:(UIView*)fromView toView:(UIView*)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void(^)(BOOLfinished))completion;
這個方法會作用于fromView的父視圖概漱,用于切換兩個view丑慎,通過執(zhí)行這個方法,會將formView從其父視圖上移除瓤摧,將toView重新粘在其父視圖上竿裂,展現(xiàn)一個動畫效果。
通過使用上述兩個方法照弥,你會發(fā)現(xiàn)某些效果會非常突兀腻异,比如想要改變視圖的顏色,它會在轉場動畫播放完成后产喉,顏色突然的變化捂掰,要改善這一效果,我們需要設置options參數(shù)包含:UIViewAnimationOptionAllowAnimatedContent這個枚舉曾沈。