知识点复习
CHENYILONG
Blog
1224筆記
知識點復習
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一定記住需要釋放,否則會影響性能!
==================================================================
今天綜合演練項目程序結構需要理解和掌握
?chenyilong. Powered byPostach.io
Blog
作者:
出處:http://www.cnblogs.com/ChenYilong/(點擊RSS訂閱)
本文版權歸作者和博客園共有,歡迎轉載,
但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
新浪微博
有道云筆記
麥庫
EverNote
Pocket
Instapaper
更多
總結
- 上一篇: 2048理论上最高能玩到多少分?
- 下一篇: Qt QSS QPushButton 详