? iOS CoreAnimation核心動畫總結(jié)

一些日常的動畫練習

封面配圖.jpeg

//動畫演示...


HDRadarWave.gif

iOS版動畫

UIView與CALayer的關系:首先CALayer從NSObject繼承,不具備響應,而UIView從UIResponder繼承油狂,可以對事件做出響應,UIView主要是對現(xiàn)實內(nèi)容的管理,而CALayer主要是對現(xiàn)實顯示內(nèi)容的繪制速警,當我們創(chuàng)建一個UIView的對象時叹誉,系統(tǒng)自動為我們創(chuàng)建一個CALayer的對象,也就是UIView的的層屬性闷旧,層用來繪制和渲染圖形长豁,UIView的本身不具備顯示的功能,我們實際所能看到的內(nèi)容是由層所呈現(xiàn)通過層對象可以很方便地調(diào)整的UIView的一些界面屬性忙灼,比如:陰影匠襟,圓角大小,邊框?qū)挾群皖伾?/p>

核心動畫:

CAAnimation類及其子類:CAAnimation是QuartzCore框架下的遵約CAMediaTiming協(xié)議和CAAction協(xié)議的抽象類该园,平時動畫所使用的是它的一些子類酸舍,結(jié)構(gòu)關系如下:


pngCAAnimationTRee.png

CAMediaTiming協(xié)議中定義了速度,時間里初,重復次數(shù)等啃勉,屬性如下:

//    //對象的開始時間,相對于其父對象
//    public var beginTime: CFTimeInterval { get set }

//    //對象的基本持續(xù)時間
//    public var duration: CFTimeInterval { get set }

//    //速度 (默認為1)
//    public var speed: Float { get set }

//    //讓動畫快進到某一點,例如時長2,timeOffset設為1,將從一半的地方開始
//    public var timeOffset: CFTimeInterval { get set }

//    //對象重復次數(shù)
//    public var repeatCount: Float { get set }

//    //對象的重復持續(xù)時間
//    public var repeatDuration: CFTimeInterval { get set }

//    //自動反向執(zhí)行
//    public var autoreverses: Bool { get set }

//    //對象在非動畫時間段的行為
//    public var fillMode: String { get set }

CAAnimation核心動畫基礎類青瀑,相關屬性:

    //  動畫的節(jié)奏
open var timingFunction: CAMediaTimingFunction?
    (
    //勻速
    public let kCAMediaTimingFunctionLinear: String

    //慢進快出
    public let kCAMediaTimingFunctionEaseIn: String

    //快進慢出
    public let kCAMediaTimingFunctionEaseOut: String

    //慢進慢出,中間加速
    public let kCAMediaTimingFunctionEaseInEaseOut: String

    //默認
    public let kCAMediaTimingFunctionDefault: String

    )
    //代理
open var delegate: CAAnimationDelegate?
    //是否在完成后移除(默認為true 動畫完畢后從圖層移除,恢復之前狀態(tài))
open var isRemovedOnCompletion: Bool

子類CAPropertyAnimation屬性動畫也屬于是抽象類璧亮。它的兩個子類才能直接對層層進行動畫操作,其中CABasicAnimation負責基礎動畫斥难,CAKeyframeAnimation負責關鍵幀動畫枝嘶。

其中CAPropertyAnimation中的相關屬性:

//CALayer的屬性名,根據(jù)相應屬性名達到相應動畫效果
 open var keyPath: String?
//是否以當前動畫效果為基礎(默認為false)    
 open var isAdditive: Bool
//動畫是否為累加效果,默認為false
 open var isCumulative: Bool
//動畫值,配合transform屬性使用
 open var valueFunction: CAValueFunction?

CABasicAnimation基礎動畫:

//keyPath屬性的初始值
 open var fromValue: Any?
//keyPath屬性的結(jié)束值
 open var toValue: Any?
//過渡值(在當前的位置上增加多少,不設置toValue時,toValue = fromValue + byValue)
 open var byValue: Any?

BaseAnimation.gif

CASpringAnimation彈簧動畫是CABasicAnimation的子類哑诊,是蘋果專門解決開發(fā)者關于彈簧動畫的這個需求而封裝的類群扶,相關屬性:

//質(zhì)量 直接影響彈簧慣性, 質(zhì)量越大則壓縮和拉伸的程度越大
open var mass: CGFloat
//勁度系數(shù),形變越大 勁度系數(shù)越大
open var stiffness: CGFloat
//阻尼系數(shù),阻尼越大 停止越快
open var damping: CGFloat
// 初始速度,正值與運動方向一致,負值與運動方向相反
open var initialVelocity: CGFloat
// 預估時間,根據(jù)以上參數(shù)計算出的預估時間
open var settlingDuration: CFTimeInterval { get }

CAKeyframeAnimation關鍵幀動畫:

//由關鍵幀組成的數(shù)組,動畫依次顯示每一幀
open var values: [Any]?
//關鍵幀路徑,優(yōu)先級比values高,如果設置了path將忽略values,只對CALayer的anchorPonit和position起作用
open var path: CGPath?
//每一幀對應的時間,不設置的話,各關鍵幀平分設定時間
open var keyTimes: [NSNumber]?
//每一幀對應的動畫節(jié)奏
open var timingFunctions: [CAMediaTimingFunction]?
//動畫計算模式
open var calculationMode: String
//動畫張力
open var tensionValues: [NSNumber]?
//動畫連續(xù)性
open var continuityValues: [NSNumber]?
//動畫偏差率
open var biasValues: [NSNumber]?
//動畫沿路徑旋轉(zhuǎn)方式
open var rotationMode: String?

CAAnimationGroup動畫組,多動畫統(tǒng)一管理

//包含所有動畫的數(shù)組 
open var animations: [CAAnimation]?

groupAnimation.gif

CATransition轉(zhuǎn)場動畫镀裤,屬性如下:

//轉(zhuǎn)場動畫類型
open var type: String
//動畫方向
open var subtype: String?
//動畫起點進度 百分比
open var startProgress: Float
//動畫終點進度 百分比

打開var endProgress:Float幾種類型效果:(使用需謹慎)

transitionAnimation.gif

控制器轉(zhuǎn)場動畫效果:考慮動畫使用場景竞阐,轉(zhuǎn)場多為頁面跳轉(zhuǎn)或是一些圖片的翻轉(zhuǎn),可以通過UIView的動畫函數(shù)或核心動畫做一些自定義的動畫效果暑劝。主要介紹自定義轉(zhuǎn)場動畫實現(xiàn)在的UINavigationController的推動和流行以及模態(tài)形式中的場景:

目前彈性效果:

//音量波動效果

CAReplicatorLayer可以將自己的子圖層復制指定的次數(shù)骆莹,并且復制體會保持被復制圖層的各種基礎屬性以及動畫

/*
 //復制圖層次數(shù)
 open var instanceCount: Int
 //
 open var preservesDepth: Bool
 //復制間隔
 open var instanceDelay: CFTimeInterval
 //復制圖層距上一圖層的位移
 open var instanceTransform: CATransform3D
 //設置復制圖層顏色
 open var instanceColor: CGColor?
 //相對于上一復制圖層紅色偏移量
 open var instanceRedOffset: Float
 //相對于上一復制圖層綠色偏移量
 open var instanceGreenOffset: Float
 //相對于上一復制圖層藍色偏移量
 open var instanceBlueOffset: Float
 //相對于上一復制圖層透明度偏移量
 open var instanceAlphaOffset: Float

 */

voiceImage.gif

CAGradientLayer漸變效果:

CAGradientLayerImage.gif

利用CAReplicatorLayer復制圖層實現(xiàn)反射效果:

WechatIMG194.png

未完待續(xù)...(代碼后面逐步上傳)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市担猛,隨后出現(xiàn)的幾起案子幕垦,更是在濱河造成了極大的恐慌,老刑警劉巖傅联,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件先改,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒸走,警方通過查閱死者的電腦和手機仇奶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來比驻,“玉大人该溯,你說我怎么就攤上這事岛抄。” “怎么了狈茉?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵弦撩,是天一觀的道長。 經(jīng)常有香客問我论皆,道長益楼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任点晴,我火速辦了婚禮感凤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粒督。我一直安慰自己陪竿,他們只是感情好,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布屠橄。 她就那樣靜靜地躺著族跛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锐墙。 梳的紋絲不亂的頭發(fā)上礁哄,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音溪北,去河邊找鬼桐绒。 笑死,一個胖子當著我的面吹牛之拨,可吹牛的內(nèi)容都是我干的茉继。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蚀乔,長吁一口氣:“原來是場噩夢啊……” “哼烁竭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吉挣,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤派撕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后听想,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腥刹,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡马胧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年汉买,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佩脊。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛙粘,死狀恐怖垫卤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情出牧,我是刑警寧澤穴肘,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站舔痕,受9級特大地震影響评抚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伯复,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一慨代、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啸如,春花似錦侍匙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帘不,卻和暖如春说莫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寞焙。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工唬滑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棺弊。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓晶密,卻偏偏與公主長得像,于是被迫代替她去往敵國和親模她。 傳聞我的和親對象是個殘疾皇子稻艰,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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