屬性解析:keyPath:經過指定CALayer的一個屬性名稱爲keyPath(NSString類型),而且對CALayer的這個屬性的值進行修改,達到相應的動畫效果。好比,指定@」position」爲keyPath,就修改CALayer的position屬性的值,以達到平移的動畫效果面試
CABasicAnimation,CAPropertyAnimation的子類數組
隨着動畫的進行,在長度爲duration的持續時間內,keyPath相應屬性的值從fromValue漸漸地變爲toValue。若是fillMode=kCAFillModeForwards和removedOnComletion=NO,那麼在動畫執行完畢後,圖層會保持顯示動畫執行後的狀態。但在實質上,圖層的屬性值仍是動畫執行前的初始值,並無真正被改變。好比,CALayer的position初始值爲(0,0),CABasicAnimation的fromValue爲(10,10),toValue爲(100,100),雖然動畫執行完畢後圖層保持在(100,100)這個位置,實質上圖層的position仍是爲(0,0)數據結構
CAKeyframeAnimation,CApropertyAnimation的子類,跟CABasicAnimation的區別是:CABasicAnimation只能從一個數值(fromValue)變到另外一個數值(toValue),而CAKeyframeAnimation會使用一個NSArray保存這些數值併發
CABasicAnimation可看作是最多隻有2個關鍵幀的CAKeyframeAnimation框架
CAAnimationGroup,CAAnimation的子類,能夠保存一組動畫對象,將CAAnimationGroup對象加入層後,組中全部動畫對象能夠同時併發運行函數
animations:用來保存一組動畫對象的NSArray
默認狀況下,一組動畫對象是同時運行的,也能夠經過設置動畫對象的beginTime屬性來更改動畫的開始時間字體
CATransition,CAAnimation的子類,用於作轉場動畫,可以爲層提供移出屏幕和移入屏幕的動畫效果。iOS比Mac OS X的轉場動畫效果少一點動畫
endProgress:動畫終點(在總體動畫的百分比)ui
UIView動畫spa
UIKit直接將動畫集成到UIView類中,當內部的一些屬性發生改變時,UIView將爲這些改變提供動畫支持
執行動畫所須要的工做由UIView類自動完成,但仍要在但願執行動畫時通知視圖,爲此須要將改變屬性的代碼放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之間
Block動畫
幀動畫
Core Graphics是基於C的API,能夠用於一切繪圖操做
Core Graphics 和Quartz 2D的區別
Core Graphics是高度集成於UIView和其餘UIKit部分的。
Core Graphics數據結構和函數能夠經過前綴CG來識別。
系統擁有座標系,如320 480 硬件有retain屏幕和非retain屏:如320 480、640 960
Core Graphics 使用的是系統的座標系來繪製圖片。在分辨率爲640 960手機上繪製圖片時,實際上Core Graphics 的座標是320*480。這個時候每一個座標系上的點,實際上擁有兩個像素。
視圖能夠經過子視圖、圖層或實現drawRect:方法來表現內容,若是說實現了drawRect:方法,那麼最好就不要混用其餘方法了,如圖層和子視圖。自定義繪圖大部分是由UIKit或者Core Graphics來實現的。
Core Graphics的優勢:快速、高效,減少應用的文件大小。同時能夠自由地使用動態的、高質量的圖形圖像。 使用Core Graphics,能夠建立直線、路徑、漸變、文字與圖像等內容,並能夠作變形處理
2D繪圖通常能夠拆分紅如下幾個操做: 線條 , 路徑 , 文本 , 圖片 , 漸變
因爲像素是依賴於目標的,因此2D繪圖並不能操做單獨的像素,咱們能夠從上下文(Context)讀取它。
繪圖就比如在畫布上拿着畫筆機械的進行畫畫,經過制定不一樣的參數來進行不一樣的繪製。
http://www.tuicool.com/articles/jIJzMf
http://blog.csdn.net/mangosnow/article/details/37054765
CoreAnimation也就是核心動畫, 是一組很是強大的動畫處理API, 可使用少許的代碼作出絢麗的效果, 是直接做用在CALayer上的, 並不是UIView, 而且Core Animation的動畫執行過程都是在後臺操做, 不會阻塞主線程.
全部動畫都是做用在CALayer上的, 當把動畫添加到Layer上, 是不直接修改它的屬性, Core Animation維護了兩個平行layer的層次結構, 模型層樹能夠看到Layer的狀態, 表示層樹則是動畫正在表現的值的近似。
Core Animation的使用步驟:
使用它須要先添加QuartzCore.framework框架和引入主頭文件<QuartzCore/QuartzCore.h>(iOS7.0+ 不須要)
初始化一個CAAnimation對象,並設置一些動畫相關屬性
經過調用CALayer的addAnimation:forKey:方法增長CAAnimation對象到CALayer中,這樣就能開始執行動畫了
經過調用CALayer的removeAnimationForKey:方法能夠中止CALayer中的動畫
以轉場動畫爲例:
建立CATransition對象
CATransition *animation = [CATransition animation];
設置運動時間(即動畫時間)
animation.duration = DURATION;
設置運動type(類型)
animation.type = type;
if (subtype != nil) { //設置子類 (和type配合使用, 指定運動的方向)
animation.subtype = subtype;}
設置運動速度(動畫的運動軌跡,用於變化起點和終點之間的插值計算,形象點說它決定了動畫運行的節奏,好比是均勻變化(相同時間變化量相同)仍是先快後慢,先慢後快仍是先慢再快再慢)
animation.timingFunction = UIViewAnimationOptionCurveEaseInOut;
將動畫添加到view的Layer層
[view.layer addAnimation:animation forKey:@"animation"];
不是很清楚題目的真正要求,是想知道核心動畫的哪些知識點。如何開始和結束動畫,這核心動畫有不少種,每種動畫還有很大的區別。
參考答案:
動畫的開始和結束均可以經過CAMediaTiming協議來處理,核心動畫的基類是遵照了CAMediaTiming協議的,能夠指定動畫開始時間、動畫時長、動畫播放速度、動畫在完成時的行爲(停留在結束處、動畫回到開始處、動畫完成時移除動畫)。
動畫有兩種基本類型:一種爲UIView動畫,又稱隱式動畫,動畫後frame的數值發生了變化.另外一種是CALayer動畫,又稱顯示動畫,動畫後模型層的數據不會發生變化,圖形回到原來的位置。
UITableViewStylePlain:普通樣式
UITableViewCellStyleDefault:Default樣式:左邊一個顯示圖片的imageView,一個標題textLabel,沒有detailTextLabel。
UITableViewCellStyleSubtitle:Subtitle樣式:左邊一個顯示圖片的imageView,上邊一個主標題textLabel,一個副標題detailTextLabel。主標題字體大且加黑,副標題字體小在主標題下邊。
UITableViewCellStyleValue1:Value1樣式:左邊一個顯示圖片的imageView,左邊一個主標題textLabel,右邊一個副標題detailTextLabel,主標題字體比較黑。
UITableViewCellStyleValue2:Value2樣式:左邊一個主標題textLabel字體偏小,挨着右邊一個副標題detailTextLabel,字體大且加黑。
上下文:主要用於描述圖形寫入哪裏;
路徑:是在圖層上繪製的內容;
狀態:用於保存配置變換的值、填充和輪廓, alpha 值等。文章若有問題,請留言,我將及時更正。