iOS 核心動畫Core Animation總結與用法

什么是核心動畫

官網釋義:Render, compose, and animate visual elements.
可以渲染,撰寫,和動畫視覺元素
也就是一組功能強大、效果華麗的動畫API

核心動畫有些什么東西

先來看張圖

1644426-7d5b97696b996ed5.png

emmmmmmm.......英語的有點復雜,看不懂,換一張吧

1498114752750475.png

還是看不懂。。。。
沒關系,不急,我們從頭往下看

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

接下來再往下

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

這邊看完是不是感嘆當初物理沒有好好學。。。繼續:

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

終于到最后一個了

  • CAAnimationGroup
    官網釋義:
    An object that allows multiple animations to be grouped and run concurrently
    允許將多個動畫分組并同時運行的對象
屬性 作用
animations 所有動畫效果元素的數組

干貨完畢,下面附上demo:
CABasicAnimation
剩余其他動畫的demo會在一個月之內更新上,不要著急哈哈哈

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容