iOS 核心動(dòng)畫(huà)Core Animation總結(jié)與用法

什么是核心動(dòng)畫(huà)

官網(wǎng)釋義:Render, compose, and animate visual elements.
可以渲染,撰寫(xiě),和動(dòng)畫(huà)視覺(jué)元素
也就是一組功能強(qiáng)大、效果華麗的動(dòng)畫(huà)API

核心動(dòng)畫(huà)有些什么東西

先來(lái)看張圖

1644426-7d5b97696b996ed5.png

emmmmmmm.......英語(yǔ)的有點(diǎn)復(fù)雜,看不懂,換一張吧

1498114752750475.png

還是看不懂。。。。
沒(méi)關(guān)系,不急,我們從頭往下看

  • CAMediaTiming
    官網(wǎng)釋義:
    Methods that model a hierarchical timing system, allowing objects to map time between their parent and local time
    這個(gè)東西翻譯出來(lái)我也不知道什么東西,不過(guò)CAMediaTiming是個(gè)協(xié)議,在這個(gè)協(xié)議中定義了時(shí)間、速度、重復(fù)次數(shù)等等
屬性 作用
beginTime 指定接收方相對(duì)于其父對(duì)象(如果適用)的開(kāi)始時(shí)間
duration 動(dòng)畫(huà)的持續(xù)時(shí)間
speed 動(dòng)畫(huà)速率,決定動(dòng)畫(huà)時(shí)間的倍率。當(dāng)speed為2時(shí),動(dòng)畫(huà)時(shí)間為設(shè)置的duration的1/2
timeOffset 動(dòng)畫(huà)時(shí)間偏移量。比如設(shè)置動(dòng)畫(huà)時(shí)長(zhǎng)為3秒,當(dāng)設(shè)置timeOffset為1.5時(shí),當(dāng)前動(dòng)畫(huà)會(huì)從中間位置開(kāi)始,并在到達(dá)指定位置時(shí),走完之前跳過(guò)的前半段動(dòng)畫(huà)
repeatCount 動(dòng)畫(huà)的重復(fù)次數(shù)
repeatDuration 動(dòng)畫(huà)的重復(fù)時(shí)間
autoreverses 動(dòng)畫(huà)由初始值到最終值后,是否反過(guò)來(lái)回到初始值的動(dòng)畫(huà)。如果設(shè)置為YES,就意味著動(dòng)畫(huà)完成后會(huì)以動(dòng)畫(huà)的形式回到初始值
fillMode 決定當(dāng)前對(duì)象在非動(dòng)畫(huà)時(shí)間段的行為,官網(wǎng)釋義:確定接收者的演示文稿是否在其活動(dòng)持續(xù)時(shí)間完成后被凍結(jié)或刪除。
  • CAAnimation
    官網(wǎng)釋義:
    The abstract superclass for Core Animation animations
    核心動(dòng)畫(huà)的抽象父類(lèi),是所有動(dòng)畫(huà)對(duì)象的父類(lèi),實(shí)現(xiàn)CAMediaTiming協(xié)議,負(fù)責(zé)控制動(dòng)畫(huà)的時(shí)間、速度和時(shí)間曲線(xiàn)等等,是一個(gè)抽象類(lèi),不能直接使用。除了CAMediaTiming協(xié)議中的方法,還增加了CAAnimationDelegate的代理屬性等
屬性 作用
timingFunction 控制動(dòng)畫(huà)的節(jié)奏。點(diǎn)開(kāi)框架查看有kCAMediaTimingFunctionLinear (勻速),kCAMediaTimingFunctionEaseIn (慢進(jìn)快出),kCAMediaTimingFunctionEaseOut (快進(jìn)慢出),kCAMediaTimingFunctionEaseInEaseOut (慢進(jìn)慢出,中間加速),kCAMediaTimingFunctionDefault (默認(rèn)),也可通過(guò)自定義創(chuàng)建CAMediaTimingFunction
delegate 代理
removedOnCompletion 確定完成后動(dòng)畫(huà)是否從目標(biāo)圖層的動(dòng)畫(huà)中刪除。默認(rèn)為YES,也就是動(dòng)畫(huà)執(zhí)行完畢后從圖層上移除,恢復(fù)到執(zhí)行前的狀態(tài),如果設(shè)置為NO,并且設(shè)置fillMode為kCAFillModeForwards,則保持動(dòng)畫(huà)執(zhí)行后的狀態(tài)

接下來(lái)再往下

  • CAPropertyAnimation
    官網(wǎng)釋義:
    An abstract subclass of CAAnimation for creating animations that manipulate the value of layer properties
    CAAnimation的一個(gè)抽象子類(lèi),用于創(chuàng)建操縱圖層屬性值的動(dòng)畫(huà)。也就是針對(duì)對(duì)象的可動(dòng)畫(huà)屬性進(jìn)行效果的設(shè)置
屬性 作用
keyPath 指定接收者動(dòng)畫(huà)的關(guān)鍵路徑
additive 屬性動(dòng)畫(huà)是否以當(dāng)前動(dòng)畫(huà)效果為基礎(chǔ),默認(rèn)為NO。當(dāng)為YES時(shí),動(dòng)畫(huà)指定的值將被添加到當(dāng)前的動(dòng)畫(huà)上
cumulative “累積”屬性影響重復(fù)動(dòng)畫(huà)如何產(chǎn)生結(jié)果。 如果為true,則動(dòng)畫(huà)的當(dāng)前值是上一個(gè)循環(huán)周期結(jié)束時(shí)的值,加上當(dāng)前重復(fù)周期的值。 如果為false,則該值只是為當(dāng)前重復(fù)循環(huán)計(jì)算的值。 默認(rèn)為NO。簡(jiǎn)言之就是當(dāng)前動(dòng)畫(huà)是否為累加的效果
valueFunction 官網(wǎng)釋義:An optional value function that is applied to interpolated values,大意就是可以通過(guò)設(shè)置該屬性來(lái)設(shè)置插入值,如按x軸的輸入值(弧度)旋轉(zhuǎn)的值函數(shù)等等
  • CABasicAnimation
    官網(wǎng)釋義:
    An object that provides basic, single-keyframe animation capabilities for a layer property
    為圖層屬性提供基本的單關(guān)鍵幀動(dòng)畫(huà)功能的對(duì)象。也就是通過(guò)keyPath對(duì)應(yīng)屬性進(jìn)行控制,需要設(shè)置fromValue以及toValue
屬性 作用
fromValue keyPath相應(yīng)屬性的初始值
toValue keyPath相應(yīng)屬性的結(jié)束值
byValue 在不設(shè)置toValue時(shí),toValue = fromValue + byValue,也就是在當(dāng)前的位置上增加多少
  • CASpringAnimation
    官網(wǎng)釋義:
    An animation that applies a spring-like force to a layer's properties
    一種將彈簧般的力應(yīng)用于圖層屬性的動(dòng)畫(huà)。也就是帶有初始速度以及阻尼指數(shù)等物理參數(shù)的屬性動(dòng)畫(huà)
    下面屬性介紹因?yàn)橐恍傩缘奶厥庑?,這里打個(gè)比方,這個(gè)動(dòng)畫(huà)也就是在不光滑的地面上有一個(gè)彈簧拴著一個(gè)球
屬性 作用
mass 官網(wǎng)釋義:The mass of the object attached to the end of the spring 附著在彈簧末端的物體的質(zhì)量
stiffness 官網(wǎng)釋義:The spring stiffness coefficient 彈簧的剛度系數(shù)
damping 官網(wǎng)釋義:Defines how the spring’s motion should be damped due to the forces of friction 定義彈簧的運(yùn)動(dòng)如何由于摩擦力而被阻尼。
initialVelocity 官網(wǎng)釋義:The initial velocity of the object attached to the spring 附著在彈簧上的物體的初始速度
settlingDuration 官網(wǎng)釋義:The estimated duration required for the spring system to be considered at rest. 結(jié)算時(shí)間,根據(jù)上述參數(shù)計(jì)算出的預(yù)計(jì)時(shí)間,相對(duì)于你設(shè)置的時(shí)間,這個(gè)時(shí)間比較準(zhǔn)確

這邊看完是不是感嘆當(dāng)初物理沒(méi)有好好學(xué)。。。繼續(xù):

  • CAKeyframeAnimation
    官網(wǎng)釋義:
    An object that provides keyframe animation capabilities for a layer object
    為圖層對(duì)象提供關(guān)鍵幀動(dòng)畫(huà)功能的對(duì)象
    重頭戲來(lái)了,平時(shí)老聽(tīng)到別人說(shuō)關(guān)鍵幀動(dòng)畫(huà),一直不知道啥玩意兒,來(lái)這里給你慢慢看:
屬性 作用
values 指定用于動(dòng)畫(huà)的關(guān)鍵幀值的對(duì)象數(shù)組
path 關(guān)鍵幀路徑,動(dòng)畫(huà)進(jìn)行的要素,優(yōu)先級(jí)比values高,但是只對(duì)CALayer的anchorPoint和position起作用
keyTimes NSNumber對(duì)象的可選數(shù)組,用于定義應(yīng)用給定關(guān)鍵幀段的時(shí)間。也就是每一幀對(duì)應(yīng)的時(shí)間,如果不設(shè)置,則各關(guān)鍵幀平分設(shè)定時(shí)間
timingFunctions CAMediaTimingFunction對(duì)象的可選數(shù)組,用于定義每個(gè)關(guān)鍵幀段的動(dòng)畫(huà)節(jié)奏
calculationMode 指定接收器如何計(jì)算中間關(guān)鍵幀值??蚣茏⑨尫g為計(jì)算模式,可以為'線(xiàn)性','離散'等, 當(dāng)設(shè)置為“paced”或“cubicPaced”時(shí),動(dòng)畫(huà)的“keyTimes”和“timingFunctions”屬性將被忽略并隱式計(jì)算
tensionValues 定義曲線(xiàn)緊密度的NSNumber對(duì)象數(shù)組,動(dòng)畫(huà)張力的控制
continuityValues 一組NSNumber對(duì)象,用于定義時(shí)間曲線(xiàn)角點(diǎn)的清晰度,動(dòng)畫(huà)連續(xù)性控制
biasValues 一組NSNumber對(duì)象,用于定義曲線(xiàn)相對(duì)于控制點(diǎn)的位置。動(dòng)畫(huà)偏差率控制
rotationMode 確定沿著路徑動(dòng)畫(huà)的物體是否旋轉(zhuǎn)以匹配路徑切線(xiàn)。系統(tǒng)提供“auto”和“autoReverse”兩種,默認(rèn)為nil。 未提供路徑對(duì)象時(shí),將此屬性設(shè)置為非零值的效果未定義。 `autoReverse'旋轉(zhuǎn)以匹配切線(xiàn)加180度
  • CATransition
    官方釋義:
    An object that provides an animated transition between a layer's states.
    提供圖層狀態(tài)之間動(dòng)畫(huà)轉(zhuǎn)換的對(duì)象。即轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
屬性 作用
type 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)類(lèi)型
subtype 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)方向
startProgress與endProgress 進(jìn)入到開(kāi)始和結(jié)束執(zhí)行過(guò)渡的進(jìn)度。 合法值是[0,1]范圍內(nèi)的數(shù)字。 endProgress必須大于或等于startProgress。 默認(rèn)值分別為0和1

終于到最后一個(gè)了

  • CAAnimationGroup
    官網(wǎng)釋義:
    An object that allows multiple animations to be grouped and run concurrently
    允許將多個(gè)動(dòng)畫(huà)分組并同時(shí)運(yùn)行的對(duì)象
屬性 作用
animations 所有動(dòng)畫(huà)效果元素的數(shù)組

干貨完畢,下面附上demo:
CABasicAnimation
剩余其他動(dòng)畫(huà)的demo會(huì)在一個(gè)月之內(nèi)更新上,不要著急哈哈哈

最后編輯于
?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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