iOS UIView 動(dòng)畫(huà)

UIView動(dòng)畫(huà)簡(jiǎn)介#

UIView動(dòng)畫(huà)實(shí)質(zhì)上是對(duì)Core Animation的封裝,提供簡(jiǎn)潔的動(dòng)畫(huà)接口。

UIView動(dòng)畫(huà)可以設(shè)置的動(dòng)畫(huà)屬性有:
1、大小變化(frame)
2、拉伸變化(bounds)
3、中心位置(center)
4、旋轉(zhuǎn)(transform)
5、透明度(alpha)
6、背景顏色(backgroundColor)
7、拉伸內(nèi)容(contentStretch)

UIView 動(dòng)畫(huà)的6個(gè)API#

1、簡(jiǎn)潔的Block動(dòng)畫(huà):包含時(shí)間和動(dòng)畫(huà)


[UIView animateWithDuration:(NSTimeInterval)  //動(dòng)畫(huà)持續(xù)時(shí)間
                  animations:^{
                  //執(zhí)行的動(dòng)畫(huà)
 }];

2、帶有動(dòng)畫(huà)完成回調(diào)的Block動(dòng)畫(huà)


[UIView animateWithDuration:(NSTimeInterval)  //動(dòng)畫(huà)持續(xù)時(shí)間
                  animations:^{
                //執(zhí)行的動(dòng)畫(huà)
 }                completion:^(BOOL finished) {
                //動(dòng)畫(huà)執(zhí)行完畢后的操作
 }];

3、可設(shè)置延遲時(shí)間和過(guò)渡效果的Block動(dòng)畫(huà)


[UIView animateWithDuration:(NSTimeInterval) //動(dòng)畫(huà)持續(xù)時(shí)間
                       delay:(NSTimeInterval) //動(dòng)畫(huà)延遲執(zhí)行的時(shí)間
                     options:(UIViewAnimationOptions) //動(dòng)畫(huà)的過(guò)渡效果
                  animations:^{
                   //執(zhí)行的動(dòng)畫(huà)
 }                completion:^(BOOL finished) {
                   //動(dòng)畫(huà)執(zhí)行完畢后的操作
 }];

---------------------------------
UIViewAnimationOptions的枚舉值如下,可組合使用:

UIViewAnimationOptionLayoutSubviews            //進(jìn)行動(dòng)畫(huà)時(shí)布局子控件
 UIViewAnimationOptionAllowUserInteraction      //進(jìn)行動(dòng)畫(huà)時(shí)允許用戶交互
 UIViewAnimationOptionBeginFromCurrentState     //從當(dāng)前狀態(tài)開(kāi)始動(dòng)畫(huà)
 UIViewAnimationOptionRepeat                    //無(wú)限重復(fù)執(zhí)行動(dòng)畫(huà)
 UIViewAnimationOptionAutoreverse               //執(zhí)行動(dòng)畫(huà)回路
 UIViewAnimationOptionOverrideInheritedDuration //忽略嵌套動(dòng)畫(huà)的執(zhí)行時(shí)間設(shè)置
 UIViewAnimationOptionOverrideInheritedCurve    //忽略嵌套動(dòng)畫(huà)的曲線設(shè)置
 UIViewAnimationOptionAllowAnimatedContent      //轉(zhuǎn)場(chǎng):進(jìn)行動(dòng)畫(huà)時(shí)重繪視圖
 UIViewAnimationOptionShowHideTransitionViews   //轉(zhuǎn)場(chǎng):移除(添加和移除圖層的)動(dòng)畫(huà)效果
 UIViewAnimationOptionOverrideInheritedOptions  //不繼承父動(dòng)畫(huà)設(shè)置

 UIViewAnimationOptionCurveEaseInOut            //時(shí)間曲線,慢進(jìn)慢出(默認(rèn)值)
 UIViewAnimationOptionCurveEaseIn               //時(shí)間曲線,慢進(jìn)
 UIViewAnimationOptionCurveEaseOut              //時(shí)間曲線,慢出
 UIViewAnimationOptionCurveLinear               //時(shí)間曲線,勻速

 UIViewAnimationOptionTransitionNone            //轉(zhuǎn)場(chǎng),不使用動(dòng)畫(huà)
 UIViewAnimationOptionTransitionFlipFromLeft    //轉(zhuǎn)場(chǎng),從左向右旋轉(zhuǎn)翻頁(yè)
 UIViewAnimationOptionTransitionFlipFromRight   //轉(zhuǎn)場(chǎng),從右向左旋轉(zhuǎn)翻頁(yè)
 UIViewAnimationOptionTransitionCurlUp          //轉(zhuǎn)場(chǎng),下往上卷曲翻頁(yè)
 UIViewAnimationOptionTransitionCurlDown        //轉(zhuǎn)場(chǎng),從上往下卷曲翻頁(yè)
 UIViewAnimationOptionTransitionCrossDissolve   //轉(zhuǎn)場(chǎng),交叉消失和出現(xiàn)
 UIViewAnimationOptionTransitionFlipFromTop     //轉(zhuǎn)場(chǎng),從上向下旋轉(zhuǎn)翻頁(yè)
 UIViewAnimationOptionTransitionFlipFromBottom  //轉(zhuǎn)場(chǎng),從下向上旋轉(zhuǎn)翻頁(yè)

4、Spring動(dòng)畫(huà)
iOS7.0后新增Spring動(dòng)畫(huà)(iOS系統(tǒng)動(dòng)畫(huà)大部分采用Spring Animation,適用于所有可被添加動(dòng)畫(huà)效果的屬性)


[UIView animateWithDuration:(NSTimeInterval)//動(dòng)畫(huà)持續(xù)時(shí)間
                       delay:(NSTimeInterval)//動(dòng)畫(huà)延遲執(zhí)行的時(shí)間
      usingSpringWithDamping:(CGFloat)//震動(dòng)效果,范圍0~1,數(shù)值越小震動(dòng)效果越明顯
       initialSpringVelocity:(CGFloat)//初始速度,數(shù)值越大初始速度越快
                     options:(UIViewAnimationOptions)//動(dòng)畫(huà)的過(guò)渡效果
                  animations:^{
                     //執(zhí)行的動(dòng)畫(huà)
 }
                  completion:^(BOOL finished) {
                     //動(dòng)畫(huà)執(zhí)行完畢后的操作
 }];

5、Keyframes動(dòng)畫(huà)
iOS7.0后新增關(guān)鍵幀動(dòng)畫(huà),支持屬性關(guān)鍵幀,不支持路徑關(guān)鍵幀


[UIView animateKeyframesWithDuration:(NSTimeInterval)//動(dòng)畫(huà)持續(xù)時(shí)間
                                delay:(NSTimeInterval)//動(dòng)畫(huà)延遲執(zhí)行的時(shí)間
                              options:(UIViewKeyframeAnimationOptions)//動(dòng)畫(huà)的過(guò)渡效果
                           animations:^{
                         //執(zhí)行的關(guān)鍵幀動(dòng)畫(huà)
                         //增加關(guān)鍵幀的方法:
                       [UIView addKeyframeWithRelativeStartTime:(double)//動(dòng)畫(huà)開(kāi)始的時(shí)間(占總時(shí)間的比例)
                         relativeDuration:(double) //動(dòng)畫(huà)持續(xù)時(shí)間(占總時(shí)間的比例)
                               animations:^{
                             //執(zhí)行的動(dòng)畫(huà)
 }];

 }
                           completion:^(BOOL finished) {
                         //動(dòng)畫(huà)執(zhí)行完畢后的操作
 }];

-------------------------------
UIViewKeyframeAnimationOptions的枚舉值如下,可組合使用:

UIViewAnimationOptionLayoutSubviews           //進(jìn)行動(dòng)畫(huà)時(shí)布局子控件
UIViewAnimationOptionAllowUserInteraction     //進(jìn)行動(dòng)畫(huà)時(shí)允許用戶交互
UIViewAnimationOptionBeginFromCurrentState    //從當(dāng)前狀態(tài)開(kāi)始動(dòng)畫(huà)
UIViewAnimationOptionRepeat                   //無(wú)限重復(fù)執(zhí)行動(dòng)畫(huà)
UIViewAnimationOptionAutoreverse              //執(zhí)行動(dòng)畫(huà)回路
UIViewAnimationOptionOverrideInheritedDuration //忽略嵌套動(dòng)畫(huà)的執(zhí)行時(shí)間設(shè)置
UIViewAnimationOptionOverrideInheritedOptions //不繼承父動(dòng)畫(huà)設(shè)置

UIViewKeyframeAnimationOptionCalculationModeLinear     //運(yùn)算模式 :連續(xù)
UIViewKeyframeAnimationOptionCalculationModeDiscrete   //運(yùn)算模式 :離散
UIViewKeyframeAnimationOptionCalculationModePaced      //運(yùn)算模式 :均勻執(zhí)行
UIViewKeyframeAnimationOptionCalculationModeCubic      //運(yùn)算模式 :平滑
UIViewKeyframeAnimationOptionCalculationModeCubicPaced //運(yùn)算模式 :平滑均勻

6、轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
6.1 從舊視圖轉(zhuǎn)到新視圖的動(dòng)畫(huà)效果


 [UIView transitionFromView:(nonnull UIView *)
                     toView:(nonnull UIView *)
                   duration:(NSTimeInterval)
                    options:(UIViewAnimationOptions)
                 completion:^(BOOL finished) {
                     //動(dòng)畫(huà)執(zhí)行完畢后的操作
 }];

6.2 單個(gè)視圖的過(guò)渡效果


 [UIView transitionWithView:(nonnull UIView *)
                   duration:(NSTimeInterval)
                    options:(UIViewAnimationOptions)
                 animations:^{
                 //執(zhí)行的動(dòng)畫(huà)
 }
                 completion:^(BOOL finished) {
                 //動(dòng)畫(huà)執(zhí)行完畢后的操作
 }];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • UIView動(dòng)畫(huà)簡(jiǎn)介 UIView動(dòng)畫(huà)實(shí)質(zhì)上是對(duì)Core Animation的封裝,提供簡(jiǎn)潔的動(dòng)畫(huà)接口。 UIVi...
    th先生閱讀 212評(píng)論 0 0
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,696評(píng)論 6 30
  • 在iOS實(shí)際開(kāi)發(fā)中常用的動(dòng)畫(huà)無(wú)非是以下四種:UIView動(dòng)畫(huà),核心動(dòng)畫(huà),幀動(dòng)畫(huà),自定義轉(zhuǎn)場(chǎng)動(dòng)畫(huà)。 1.UIView...
    請(qǐng)叫我周小帥閱讀 3,326評(píng)論 1 23
  • 花了將近一周的時(shí)間去學(xué)習(xí)ios動(dòng)畫(huà),因?yàn)閷?duì)于一個(gè)ios開(kāi)發(fā)者來(lái)說(shuō),動(dòng)畫(huà)內(nèi)容絕對(duì)是一門(mén)必修課。聽(tīng)了不少課,也看了不少...
    ChinaSwift閱讀 2,123評(píng)論 2 35
  • 這幾天一直斷網(wǎng),簡(jiǎn)書(shū)上不來(lái)了,也更新不了,今天終于恢復(fù)了。讀書(shū)繼續(xù)……筆記繼續(xù)……
    沈浪閱讀 257評(píng)論 0 1

友情鏈接更多精彩內(nèi)容