UIView Animation

1. UIView類方法動(dòng)畫(huà)
/**
 標(biāo)志動(dòng)畫(huà)開(kāi)始,開(kāi)始編輯動(dòng)畫(huà)
 
 @param animationID 動(dòng)畫(huà)的唯一標(biāo)示
 @param context 附加參數(shù)
 */
+ (void)beginAnimations:(nullable NSString *)animationID
                context:(nullable void *)context;


/**
 標(biāo)志動(dòng)畫(huà)結(jié)束冗茸,開(kāi)始執(zhí)行動(dòng)畫(huà)
 */
+ (void)commitAnimations;


/**
 設(shè)置動(dòng)畫(huà)時(shí)長(zhǎng)
 
 @param duration duration description
 */
+ (void)setAnimationDuration:(NSTimeInterval)duration;


/**
 設(shè)置代理
 
 @param delegate delegate description
 */
+ (void)setAnimationDelegate:(nullable id)delegate;


/**
 動(dòng)畫(huà)將要開(kāi)始時(shí)執(zhí)行的方法
 
 @param selector selector description
 */
+ (void)setAnimationWillStartSelector:(nullable SEL)selector;


/**
 動(dòng)畫(huà)已經(jīng)結(jié)束時(shí)執(zhí)行的方法
 
 @param selector selector description
 */
+ (void)setAnimationDidStopSelector:(nullable SEL)selector;


/**
 設(shè)置動(dòng)畫(huà)執(zhí)行延時(shí)時(shí)間
 
 @param delay delay description
 */
+ (void)setAnimationDelay:(NSTimeInterval)delay;


/**
 設(shè)置動(dòng)畫(huà)開(kāi)始的Date
 
 @param startDate startDate description
 */
+ (void)setAnimationStartDate:(NSDate *)startDate;


/**
 設(shè)置動(dòng)畫(huà)效果
 
 @param curve curve description
 
 typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
 UIViewAnimationCurveEaseInOut,         // 慢入慢出
 UIViewAnimationCurveEaseIn,            // 慢入
 UIViewAnimationCurveEaseOut,           // 慢出
 UIViewAnimationCurveLinear,            // 線性勻速
 };
 */
+ (void)setAnimationCurve:(UIViewAnimationCurve)curve;


/**
 動(dòng)畫(huà)重復(fù)次數(shù)
 
 @param repeatCount repeatCount description
 */
+ (void)setAnimationRepeatCount:(float)repeatCount;


/**
 設(shè)置動(dòng)畫(huà)是否繼續(xù)執(zhí)行反相動(dòng)畫(huà)
 
 @param repeatAutoreverses repeatAutoreverses description
 */
+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;


/**
 設(shè)置是否從當(dāng)前狀態(tài)開(kāi)始動(dòng)畫(huà)
 
 @param fromCurrentState fromCurrentState description
 
 當(dāng)一個(gè)動(dòng)畫(huà)尚未完成葱蝗,將要進(jìn)行下一個(gè)動(dòng)畫(huà)時(shí):
 如果設(shè)置為YES绰播,動(dòng)畫(huà)將從上一個(gè)動(dòng)畫(huà)當(dāng)前的狀態(tài)進(jìn)行下一個(gè)動(dòng)畫(huà)
 如果設(shè)置為NO澄耍,那當(dāng)前動(dòng)畫(huà)會(huì)立即結(jié)束,達(dá)到當(dāng)前動(dòng)畫(huà)的最終狀態(tài),再執(zhí)行下一個(gè)動(dòng)畫(huà)
 */
+ (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState;


/**
 設(shè)置試圖過(guò)渡效果
 
 @param transition 動(dòng)畫(huà)效果
 @param view 添加動(dòng)畫(huà)效果的View
 @param cache 是否使用視圖緩存,YES:視圖在開(kāi)始和結(jié)束時(shí)渲染一次;NO:視圖在每一幀都渲染
 
 typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
 UIViewAnimationTransitionNone,             // 不使用動(dòng)畫(huà)
 UIViewAnimationTransitionFlipFromLeft,     // 從左向右旋轉(zhuǎn)翻頁(yè)
 UIViewAnimationTransitionFlipFromRight,    // 從右向左旋轉(zhuǎn)翻頁(yè)
 UIViewAnimationTransitionCurlUp,           // 從下往上卷曲翻頁(yè)
 UIViewAnimationTransitionCurlDown,         // 從上往下卷曲翻頁(yè)
 };
 
 */
+ (void)setAnimationTransition:(UIViewAnimationTransition)transition
                       forView:(UIView *)view
                         cache:(BOOL)cache;


/**
 是否禁用動(dòng)畫(huà)效果(對(duì)象的屬性會(huì)被改變便脊,只是沒(méi)有動(dòng)畫(huà)效果)
 
 @param enabled enabled description
 */
+ (void)setAnimationsEnabled:(BOOL)enabled;
2. UIView block動(dòng)畫(huà)
/**
 簡(jiǎn)單的動(dòng)畫(huà)方法
 
 @param duration 動(dòng)畫(huà)時(shí)長(zhǎng)
 @param animations 需要執(zhí)行的動(dòng)畫(huà)block
 */
+ (void)animateWithDuration:(NSTimeInterval)duration
                 animations:(void (^)(void))animations;


/**
 帶有完成回調(diào)的動(dòng)畫(huà)方法
 
 @param duration 動(dòng)畫(huà)時(shí)長(zhǎng)
 @param animations 需要執(zhí)行的動(dòng)畫(huà)block
 @param completion 動(dòng)畫(huà)完成后需要執(zhí)行的block
 */
+ (void)animateWithDuration:(NSTimeInterval)duration
                 animations:(void (^)(void))animations
                 completion:(void (^ __nullable)(BOOL finished))completion;


/**
 帶有延時(shí)和可選擇動(dòng)畫(huà)效果的動(dòng)畫(huà)方法
 
 @param duration 動(dòng)畫(huà)時(shí)長(zhǎng)
 @param delay 延時(shí)時(shí)長(zhǎng)
 @param options 動(dòng)畫(huà)效果(枚舉類型值蚂四,具體效果參考系統(tǒng)系統(tǒng)枚舉)
 @param animations 需要執(zhí)行的動(dòng)畫(huà)block
 @param completion 動(dòng)畫(huà)完成后需要執(zhí)行的block
 */
+ (void)animateWithDuration:(NSTimeInterval)duration
                      delay:(NSTimeInterval)delay
                    options:(UIViewAnimationOptions)options
                 animations:(void (^)(void))animations
                 completion:(void (^ __nullable)(BOOL finished))completion;


/**
 spring動(dòng)畫(huà)方法
 
 @param duration 動(dòng)畫(huà)時(shí)長(zhǎng)
 @param delay 延時(shí)時(shí)長(zhǎng)
 @param dampingRatio 震動(dòng)效果,范圍0~1,數(shù)值越小震動(dòng)效果越明顯
 @param velocity 初始速度遂赠,數(shù)值越大初始速度越快
 @param options 動(dòng)畫(huà)效果(枚舉類型值久妆,具體效果參考系統(tǒng)系統(tǒng)枚舉)
 @param animations 需要執(zhí)行的動(dòng)畫(huà)block
 @param completion 動(dòng)畫(huà)完成后需要執(zhí)行的block
 */
+ (void)animateWithDuration:(NSTimeInterval)duration
                      delay:(NSTimeInterval)delay
     usingSpringWithDamping:(CGFloat)dampingRatio
      initialSpringVelocity:(CGFloat)velocity
                    options:(UIViewAnimationOptions)options
                 animations:(void (^)(void))animations
                 completion:(void (^ __nullable)(BOOL finished))completion;


/**
 兩個(gè)視圖切換的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)方法
 
 @param fromView fromView description
 @param toView toView description
 @param duration 動(dòng)畫(huà)時(shí)長(zhǎng)
 @param options 動(dòng)畫(huà)效果(枚舉類型值,具體效果參考系統(tǒng)系統(tǒng)枚舉)
 @param completion 動(dòng)畫(huà)完成后需要執(zhí)行的block
 
 在該動(dòng)畫(huà)過(guò)程中跷睦,fromView 會(huì)從父視圖中移除筷弦,并講 toView 添加到父視圖中,
 注意轉(zhuǎn)場(chǎng)動(dòng)畫(huà)的作用對(duì)象是父視圖抑诸。
 */
+ (void)transitionFromView:(UIView *)fromView
                    toView:(UIView *)toView
                  duration:(NSTimeInterval)duration
                   options:(UIViewAnimationOptions)options
                completion:(void (^ __nullable)(BOOL finished))completion;


/**
 單個(gè)視圖轉(zhuǎn)場(chǎng)效果動(dòng)畫(huà)方法
 
 @param view view description
 @param duration 動(dòng)畫(huà)時(shí)長(zhǎng)
 @param options 動(dòng)畫(huà)效果(枚舉類型值烂琴,具體效果參考系統(tǒng)系統(tǒng)枚舉)
 @param animations 需要執(zhí)行的動(dòng)畫(huà)block
 @param completion 動(dòng)畫(huà)完成后需要執(zhí)行的block
 */
+ (void)transitionWithView:(UIView *)view
                  duration:(NSTimeInterval)duration
                   options:(UIViewAnimationOptions)options
                animations:(void (^ __nullable)(void))animations
                completion:(void (^ __nullable)(BOOL finished))completion;


/**
 關(guān)鍵幀(keyFrame)動(dòng)畫(huà)
 
 @param duration 動(dòng)畫(huà)時(shí)長(zhǎng)
 @param delay 延時(shí)時(shí)長(zhǎng)
 @param options 動(dòng)畫(huà)效果(枚舉類型值,具體效果參考系統(tǒng)系統(tǒng)枚舉)
 @param animations 需要執(zhí)行的動(dòng)畫(huà)block
 @param completion 動(dòng)畫(huà)完成后需要執(zhí)行的block
 */
+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration
                               delay:(NSTimeInterval)delay
                             options:(UIViewKeyframeAnimationOptions)options
                          animations:(void (^)(void))animations
                          completion:(void (^ __nullable)(BOOL finished))completion;

//其中需要注意的是添加關(guān)鍵幀的方法:
/**
 添加關(guān)鍵幀的方法
 
 @param frameStartTime 動(dòng)畫(huà)開(kāi)始的時(shí)間(數(shù)值為占總時(shí)間的比例)
 @param frameDuration 動(dòng)畫(huà)持續(xù)時(shí)間(數(shù)值為占總時(shí)間的比例)
 @param animations 需要執(zhí)行的動(dòng)畫(huà)block
 */
+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime
                        relativeDuration:(double)frameDuration
                              animations:(void (^)(void))animations;
3. 關(guān)于options參數(shù)

3.1 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è)

3.2 UIViewKeyframeAnimationOptions

UIViewKeyframeAnimationOptionLayoutSubviews           //進(jìn)行動(dòng)畫(huà)時(shí)布局子控件
UIViewKeyframeAnimationOptionAllowUserInteraction     //進(jìn)行動(dòng)畫(huà)時(shí)允許用戶交互
UIViewKeyframeAnimationOptionBeginFromCurrentState    //從當(dāng)前狀態(tài)開(kāi)始動(dòng)畫(huà)
UIViewKeyframeAnimationOptionRepeat                   //無(wú)限重復(fù)執(zhí)行動(dòng)畫(huà)
UIViewKeyframeAnimationOptionAutoreverse              //執(zhí)行動(dòng)畫(huà)回路
UIViewKeyframeAnimationOptionOverrideInheritedDuration //忽略嵌套動(dòng)畫(huà)的執(zhí)行時(shí)間設(shè)置
UIViewKeyframeAnimationOptionOverrideInheritedOptions //不繼承父動(dòng)畫(huà)設(shè)置
UIViewKeyframeAnimationOptionCalculationModeLinear     //運(yùn)算模式 :連續(xù)
UIViewKeyframeAnimationOptionCalculationModeDiscrete   //運(yùn)算模式 :離散
UIViewKeyframeAnimationOptionCalculationModePaced      //運(yùn)算模式 :均勻執(zhí)行
UIViewKeyframeAnimationOptionCalculationModeCubic      //運(yùn)算模式 :平滑
UIViewKeyframeAnimationOptionCalculationModeCubicPaced //運(yùn)算模式 :平滑均勻

參考文章:http://www.reibang.com/p/80c2bef6dbe5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末授药,一起剝皮案震驚了整個(gè)濱河市士嚎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悔叽,老刑警劉巖莱衩,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異娇澎,居然都是意外死亡笨蚁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)趟庄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)括细,“玉大人,你說(shuō)我怎么就攤上這事戚啥》艿ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵猫十,是天一觀的道長(zhǎng)览濒。 經(jīng)常有香客問(wèn)我呆盖,道長(zhǎng),這世上最難降的妖魔是什么贷笛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任应又,我火速辦了婚禮,結(jié)果婚禮上乏苦,老公的妹妹穿的比我還像新娘株扛。我一直安慰自己,他們只是感情好汇荐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布洞就。 她就那樣靜靜地躺著,像睡著了一般拢驾。 火紅的嫁衣襯著肌膚如雪奖磁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天繁疤,我揣著相機(jī)與錄音咖为,去河邊找鬼。 笑死稠腊,一個(gè)胖子當(dāng)著我的面吹牛躁染,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播架忌,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吞彤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了叹放?” 一聲冷哼從身側(cè)響起饰恕,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎井仰,沒(méi)想到半個(gè)月后埋嵌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俱恶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年雹嗦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片合是。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡了罪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出聪全,到底是詐尸還是另有隱情泊藕,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布难礼,位于F島的核電站娃圆,受9級(jí)特大地震影響汽久,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜踊餐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臀稚。 院中可真熱鬧吝岭,春花似錦、人聲如沸吧寺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)稚机。三九已至幕帆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赖条,已是汗流浹背失乾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纬乍,地道東北人碱茁。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像仿贬,于是被迫代替她去往敵國(guó)和親纽竣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容