什么是核心動畫
官網釋義: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會在一個月之內更新上,不要著急哈哈哈