知識點複習html
1. 觸摸事件&手勢識別
1> 4個觸摸事件,針對視圖的
2> 6個手勢識別(除了用代碼添加,也能夠用Storyboard添加)
附加在某一個特定視圖上的,其中須要注意輕掃手勢一般會附加到根視圖上。
* 大部分操做,都會在touchesBegan事件中處理,以防夜長夢多!
* touchesEnd事件一般用於處理touchesMoved事件中的收尾工做!
以上兩項內容都必需要掌握
3> 響應者鏈條,目的是爲了讓你們可以理解手勢觸摸事件的傳遞過程,一旦遇到須要攔截事件時,知道從何處下手。
響應者鏈條只須要理解「鏈條」的產生和事件傳遞的順序便可。
==================================================================
2. Quartz2D繪圖
學習的線路圖,爲何要學習Quartz2D
1> 以圖形方式,實時繪圖的技術,能夠高效的繪製簡單圖形,增長界面的表現
2> 核心動畫 <- CALayer(負責UIView中的內容的) <- Quartz2D
Quartz2D是C語言的框架!根OC語法不一樣
Quartz2D是跨平臺(MAC & iOS)的,大多數跨平臺的技術都是C語言框架的。
GCD(多線程)
須要掌握的內容:
1> 理解上下文的概念
2> 理解而且建立簡單的繪圖路徑
3> 可以完成直線、矩形、圓形、圓弧、圖像、文本的繪製,能夠輔助快速的提高UI界面的表現
4> 可以用圖像上下文繪製圖像
5> 繪製徑向漸變、PDF(理解就行)
6> 全部的繪圖工做必須在drawRect:方法中進行,若是須要更新顯示,使用setNeedDisplay方法。
==================================================================
3. CALayer圖層
1) 每個視圖都有一個根圖層,圖層用來負責視圖中內容的顯示,不負責響應事件
2) 圖層能夠添加子圖層,每個視圖有且僅有一個根圖層
3) 全部的非根圖層,都具備隱式動畫屬性,直接修改這些屬性,就能夠產生動畫
4) 核心動畫的本質是經過以修改圖層鍵值路徑的方式實現動畫的!
5) 在動畫過程當中,圖層其實是將視圖中的內容生成一張圖像參與動畫,視圖自己的位置並不會發生變化,其目的就是爲了提升性能!
* 圖層的工做順序
1) 在
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
代理方法中繪製根圖層中的全部內容
繪製結束後,調用視圖的
2)
- (void)drawRect:(CGRect)rect
從代理方法中,將繪製結果(圖像)傳給drawRect,直接將內容拷貝到屏幕
3) 調用子圖層的
- (void)drawInContext:(CGContextRef)ctx
繪製子圖層中的內容
關於CALayer須要掌握的內容:
1. 記住可動畫屬性
position 位置
backgroundColor 背景顏色
opacity 透明度
transform 形變
cornerRadius 圓角
content 內容(id)圖像
==================================================================
4. CAAnimation
基本動畫和關鍵幀動畫都是經過修改圖層的可動畫屬性實現的動畫方式,以健值路徑的方式修改。
要修改屬性,能夠利用view.layer.xxx智能提示幫助,不用硬記,能眼熟就行。
1) CABasicAnimation
fromValue 從哪裏來
toValue 到哪裏去
2) CAKeyFrameAnimation
values 一堆數值的數組
path 針對position屬性的動畫
3) CAAnimationGroup
將基本動畫和關鍵幀動畫組合併發使用
須要注意的是:keyPath不要重複,羣組中的每一個動畫只能負責修改一個keyPath
4) *** CATransition(轉場) ***
type:轉場的類型
subType:方向(上下左右)
全部的動畫都不要忘記指定duration。
其餘經常使用屬性
* repeatCount 重複次數
* autoReverse 自動翻轉
在絕大多數應用程序開發中,基本動畫和均可以使用塊代碼替代。關鍵幀動畫在使用負責效果時點綴的。
對以上動畫有印象,知道大概的使用方法,在須要的時候,去哪裏查詢便可。
* 轉場動畫使用仍是比較頻繁!
==================================================================
5. UIDynamic UI動力學
使用步驟:
1> 實例化一個animator
2> 實例化要參與仿真的視圖或者控件
3> 實例化仿真行爲
重力: Gravity
碰撞: Collision 有代理方法,能夠添加邊界碰撞
附加: Attachment 有剛性、彈性區別,設置damping便可
能夠附加到一個點,也能夠附加到一個視圖上
吸附: Snap 設置damping
推: Push 單次推和連續推
若是是單次推,須要將active = YES
須要指定
* 力量
* 角度
元素屬性,一般只須要改彈力系數便可
4> 將行爲添加到animator,仿真馬上開始啓動
==================================================================
6. KVC & KVO
KVC - Key Value Coding
KVO - Key Value Observer
KVC是經過鍵值路徑的方式間接訪問對象屬性的,CAAnimation中能夠經過KVC直接動態添加屬性。
KVO是能夠經過鍵值路徑的方式觀察某一個對象屬性的變化,並及時通知!
關於KVO必定記住須要釋放,不然會影響性能!
==================================================================
今天綜合演練項目程序結構須要理解和掌握
Technorati Tags: CAAnimation, CALayer圖層, Quartz2D繪圖, UIDynamic UI動力學, 觸摸事件&手勢識別, KVC&KVO數組