CoreAnimation

Core Animation負(fù)責(zé)所有的滾動刻伊、旋轉(zhuǎn)尺铣、縮小和放大以及所有的iOS動畫效果。其中UIKit類通常都有animated:參數(shù)部分缺谴,它可以允許是否使用動畫。

我們知道每個UIView都關(guān)聯(lián)到一個CALayer對象耳鸯,CALayer是Core Animation中的圖層湿蛔。

Core Animation主要就是通過修改圖層來改變UI的大小,位置县爬,從而實現(xiàn)動畫效果煌集。

可以說,任何一個應(yīng)用程序都離不開動畫捌省!
就連蘋果各個UI控件中的切換操作苫纤,都有它內(nèi)在的動畫。

CoreAnimation 使用步驟

  1. 初始化 CAAnimation
  2. 設(shè)置 動畫相關(guān)屬性
  3. 通過調(diào)用CALayer的addAnimation:forKey:方法增加CAAnimation對象到CALayer中纲缓,這樣就能開始執(zhí)行動畫了
  4. 通過調(diào)用CALayer的removeAnimationForKey:方法可以停止CALayer中的動畫

CAAnimation是所有動畫類的父類卷拘,但是它不能直接使用,應(yīng)該使用它的子類祝高。

常見屬性有:

  • duration:動畫的持續(xù)時間
  • repeatCount:動畫的重復(fù)次數(shù)
  • repeatDuration:動畫的重復(fù)時間
  • removedOnCompletion:默認(rèn)為YES栗弟,代表動畫執(zhí)行完畢后就從圖層上移除,圖形會恢復(fù)到動畫執(zhí)行前的狀態(tài)工闺。如果想讓圖層保持顯示動畫執(zhí)行后的狀態(tài)乍赫,那就設(shè)置為NO瓣蛀,不過還要設(shè)置fillMode為kCAFillModeForwards
  • fillMode:決定當(dāng)前對象在非active時間段的行為.比如動畫開始之前,動畫結(jié)束之后
  • beginTime:可以用來設(shè)置動畫延遲執(zhí)行時間,若想延遲2s雷厂,就設(shè)置為CACurrentMediaTime()+2惋增,CACurrentMediaTime()為圖層的當(dāng)前時間
  • timingFunction:速度控制函數(shù),控制動畫運行的節(jié)奏
  • delegate:動畫代理

說明:(1)能用的動畫類只有4個子類:CABasicAnimation改鲫、CAKeyframeAnimation诈皿、CATransition、CAAnimationGroup

(2)CAMediaTiming是一個協(xié)議(protocol)像棘。

CAPropertyAnimation是CAAnimation的子類稽亏,但是不能直接使用,要想創(chuàng)建動畫對象缕题,應(yīng)該使用它的兩個子類:CABasicAnimation和CAKeyframeAnimation

它有個NSString類型的keyPath屬性截歉,你可以指定CALayer的某個屬性名為keyPath,并且對CALayer的這個屬性的值進(jìn)行修改烟零,達(dá)到相應(yīng)的動畫效果怎披。比如,指定@"position"為keyPath瓶摆,就會修改CALayer的position屬性的值凉逛,以達(dá)到平移的動畫效果

基本動畫

CABasicAnimation

  • let animation = CABasicAnimation()
  • keyPath : 要改變的屬性
  • fromeValue (默認(rèn)狀態(tài)開始這個值不設(shè)置)
  • toValue
  • duration
// 保持運動后的狀態(tài)      
animation.isRemovedOnCompletion = false
animation.fillMode = kCAFillModeForwards
  • view.layer.add(animation, forKey: nil)

就基本搞定

關(guān)鍵幀動畫

是CApropertyAnimation的子類,跟CABasicAnimation的區(qū)別是:CABasicAnimation只能從一個數(shù)值(fromValue)變到另一個數(shù)值(toValue)群井,而CAKeyframeAnimation會使用一個NSArray保存這些數(shù)值状飞。

** 屬性解析:**

  • values:就是上述的NSArray對象。里面的元素稱為”關(guān)鍵幀”(keyframe)书斜。動畫對象會在指定的時間(duration)內(nèi)诬辈,依次顯示values數(shù)組中的每一個關(guān)鍵幀

  • path:可以設(shè)置一個CGPathRef\CGMutablePathRef,讓層跟著路徑移動。path只對CALayer的anchorPoint和position起作用荐吉。如果你設(shè)置了path焙糟,那么values將被忽略

  • keyTimes:可以為對應(yīng)的關(guān)鍵幀指定對應(yīng)的時間點,其取值范圍為0到1.0,keyTimes中的每一個時間值都對應(yīng)values中的每一幀.當(dāng)keyTimes沒有設(shè)置的時候,各個關(guān)鍵幀的時間是平分的

說明:CABasicAnimation可看做是最多只有2個關(guān)鍵幀的CAKeyframeAnimation

轉(zhuǎn)場動畫

CATransition
屬性解析:

  • type:動畫過渡類型
  • subtype:動畫過渡方向
  • startProgress:動畫起點(在整體動畫的百分比)
  • endProgress:動畫終點(在整體動畫的百分比)

組動畫

CAAnimation的子類,可以保存一組動畫對象样屠,將CAAnimationGroup對象加入層后穿撮,組中所有動畫對象可以同時并發(fā)運行。

屬性解析:

  • animations:用來保存一組動畫對象的NSArray
  • 默認(rèn)情況下痪欲,一組動畫對象是同時運行的悦穿,也可以通過設(shè)置動畫對象的beginTime屬性來更改動畫的開始時間
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市业踢,隨后出現(xiàn)的幾起案子栗柒,更是在濱河造成了極大的恐慌,老刑警劉巖知举,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬沦,死亡現(xiàn)場離奇詭異太伊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)逛钻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門僚焦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绣的,你說我怎么就攤上這事∮耍” “怎么了屡江?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赛不。 經(jīng)常有香客問我惩嘉,道長,這世上最難降的妖魔是什么踢故? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任文黎,我火速辦了婚禮,結(jié)果婚禮上殿较,老公的妹妹穿的比我還像新娘耸峭。我一直安慰自己,他們只是感情好淋纲,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布劳闹。 她就那樣靜靜地躺著,像睡著了一般洽瞬。 火紅的嫁衣襯著肌膚如雪本涕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天伙窃,我揣著相機(jī)與錄音菩颖,去河邊找鬼。 笑死为障,一個胖子當(dāng)著我的面吹牛晦闰,可吹牛的內(nèi)容都是我干的鳍怨。 我是一名探鬼主播鹅髓,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼京景!你這毒婦竟也來了窿冯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤确徙,失蹤者是張志新(化名)和其女友劉穎醒串,沒想到半個月后执桌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡芜赌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年仰挣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缠沈。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡膘壶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洲愤,到底是詐尸還是另有隱情颓芭,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布柬赐,位于F島的核電站亡问,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏肛宋。R本人自食惡果不足惜州藕,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望酝陈。 院中可真熱鬧床玻,春花似錦、人聲如沸沉帮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遇西。三九已至馅精,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粱檀,已是汗流浹背洲敢。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留茄蚯,地道東北人压彭。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像渗常,于是被迫代替她去往敵國和親壮不。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

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

  • 如果想讓事情變得順利皱碘,只有靠自己 -- 夏爾·紀(jì)堯姆 上一章介紹了隱式動畫的概念询一。隱式動畫是在iOS平臺創(chuàng)建動態(tài)用...
    雪_晟閱讀 573評論 0 1
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺ios動畫全貌健蕊。在這里你可以看...
    每天刷兩次牙閱讀 8,495評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果菱阵,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌缩功。在這里你可以看...
    F麥子閱讀 5,113評論 5 13
  • 一晴及、UIKit動畫 第一種寫法是利用屬性,結(jié)合beginAnimations嫡锌、commitAnimations 第...
    Gary_Tseng閱讀 965評論 1 3
  • 巴斯德說過:“告訴你使我達(dá)到目標(biāo)的奧秘吧虑稼,我唯一的力量就是我的堅持精神”。大學(xué)畢業(yè)前势木,不知道學(xué)過多次做事要堅持的道...
    夢見小寶閱讀 435評論 0 0