一款APP的成功與否,除了完善的功能外,用戶體驗也佔有極大的比重,動畫的合理運用,能夠很好的加強用戶體驗。iOS開發中,經常使用的動畫處理有UIView動畫編程和核心動畫編程,其中UIView動畫使用簡便,開發中應用十分普遍。這篇博客,主要討論UIView的動畫使用。編程
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;ide
這個是參數最少的一個方法,咱們能夠經過設置一個時間和block塊來完成動畫,時間參數是動畫執行的時長,block塊中爲要執行的動畫動做,具體能夠執行那些動做,咱們會在後面說。例如在1S內將view漸變透明:函數
[UIView animateWithDuration:1 animations:^{ _myView.alpha=0; }];
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;動畫
這個函數會帶兩個block塊,用法和第一個函數類似,設置一個執行時間和一個執行動做,第二個block塊中能夠添加一個動畫執行結束後的動做,做爲補充,例以下面代碼的效果,在1S內將view漸變爲透明,動畫結束後,view在瞬間變回不透明:url
[UIView animateWithDuration:1 animations:^{ _myView.alpha=0; } completion:^(BOOL finished) { if (finished) { _myView.alpha=1; } }];
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;spa
這個函數除了上面的屬性外,能夠設置延時執行,同時能夠設置一個動畫效果參數,這個參數是個枚舉,它能夠影響動畫的執行效果,後面會再總結。3d
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;code
這個函數是iOS7以後的一個新函數,經過這個函數,咱們能夠方便的製做出效果炫酷的動畫,這個函數的核心是兩個阻尼參數,參數dampingRatio能夠理解爲彈簧效果的強弱,設置1則沒有回彈效果,設置0則會劇烈的阻尼回彈。velocity參數用於設置彈簧的初始速度。繼承
經過上面的介紹,咱們瞭解了幾個使用動畫的函數,那麼那些屬性能夠產生動畫效果呢?ip
官方文檔告訴咱們這些屬性是能夠經過上述方法進行動畫的:
在UIView執行動畫的相關函數中,有UIViewAnimationOptions這個參數能夠對動畫的執行效果進行設置,這個枚舉很是多,可分爲三部分,以下:
enum { //這部分是基礎屬性的設置 UIViewAnimationOptionLayoutSubviews = 1 << 0,//設置子視圖隨父視圖展現動畫 UIViewAnimationOptionAllowUserInteraction = 1 << 1,//容許在動畫執行時用戶與其進行交互 UIViewAnimationOptionBeginFromCurrentState = 1 << 2,//容許在動畫執行時執行新的動畫 UIViewAnimationOptionRepeat = 1 << 3,//設置動畫循環執行 UIViewAnimationOptionAutoreverse = 1 << 4,//設置動畫反向執行,必須和重複執行一塊兒使用 UIViewAnimationOptionOverrideInheritedDuration = 1 << 5,//強制動畫使用內層動畫的時間值 UIViewAnimationOptionOverrideInheritedCurve = 1 << 6,//強制動畫使用內層動畫曲線值 UIViewAnimationOptionAllowAnimatedContent = 1 << 7,//設置動畫視圖實時刷新 UIViewAnimationOptionShowHideTransitionViews = 1 << 8,//設置視圖切換時隱藏,而不是移除 UIViewAnimationOptionOverrideInheritedOptions = 1 << 9,// //這部分屬性設置動畫播放的線性效果 UIViewAnimationOptionCurveEaseInOut = 0 << 16,//淡入淡出 首末減速 UIViewAnimationOptionCurveEaseIn = 1 << 16,//淡入 初始減速 UIViewAnimationOptionCurveEaseOut = 2 << 16,//淡出 末尾減速 UIViewAnimationOptionCurveLinear = 3 << 16,//線性 勻速執行 //這部分設置UIView切換效果 UIViewAnimationOptionTransitionNone = 0 << 20, UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20,//從左邊切入 UIViewAnimationOptionTransitionFlipFromRight = 2 << 20,//從右邊切入 UIViewAnimationOptionTransitionCurlUp = 3 << 20,//從上面立體進入 UIViewAnimationOptionTransitionCurlDown = 4 << 20,//從下面立體進入 UIViewAnimationOptionTransitionCrossDissolve = 5 << 20,//溶解效果 UIViewAnimationOptionTransitionFlipFromTop = 6 << 20,//從上面切入 UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20,//從下面切入 };
提示:1,屬性可使用|進行多項合併。
2,這類的動畫能夠進行嵌套,其中有一點須要注意,內層動畫的執行時間和曲線模式會默認繼承外層動的,若要強制使用新的參數,使用以下的兩個參數:
UIViewAnimationOptionOverrideInheritedDuration = 1 << 5,//強制動畫使用內層動畫的時間值 UIViewAnimationOptionOverrideInheritedCurve = 1 << 6,//強制動畫使用內層動畫曲線值
專一技術,熱愛生活,交流技術,也作朋友。
——琿少 QQ羣:203317592