iOS動畫開發之一——UIViewAnimation動畫的使用

iOS動畫開發之一——UIViewAnimation動畫的使用

1、簡介

      一款APP的成功與否,除了完善的功能外,用戶體驗也佔有極大的比重,動畫的合理運用,能夠很好的加強用戶體驗。iOS開發中,經常使用的動畫處理有UIView動畫編程和核心動畫編程,其中UIView動畫使用簡便,開發中應用十分普遍。這篇博客,主要討論UIView的動畫使用。編程

2、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參數用於設置彈簧的初始速度。繼承

 

3、UIView動畫能夠操做的視圖屬性

       經過上面的介紹,咱們瞭解了幾個使用動畫的函數,那麼那些屬性能夠產生動畫效果呢?ip

官方文檔告訴咱們這些屬性是能夠經過上述方法進行動畫的:

 

4、動畫執行選項設置

   在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

相關文章
相關標籤/搜索