動畫

1> CALayer簡介

*PPT簡介

2>屬性和新建圖層

01-CALayer01-基本使用

掌握

怎么設(shè)置陰影:shadowOpacity,shadowRadius + 解釋圓角半徑 + 邊框 達到效果:太陽發(fā)光

比較特殊的View:UIImgeView + UIImageView圓角半徑 + 主層和contents + 裁剪 + 陰影無效,達到效果,圓形頭像

可以改變圖層的形變屬性:touchBegin

怎么旋轉(zhuǎn)圖層:給三維坐標系的點,與原點形成向量,繞著向量旋轉(zhuǎn),加動畫演示旋轉(zhuǎn)效果

怎么利用KVC改變形變

KVC注意點:

1> 給對象的哪個屬性賦值,就寫到keyPath里面。

2> value的值一定是屬性的類型才行

如何快速二維旋轉(zhuǎn):ketPath為transform.rotation

縮放注意:z軸不需要縮放,為1就好。

KVC的好處:利用KVC可以快速的進行二維旋轉(zhuǎn)和,寬,高同時縮放.

*講解順序 陰影 -> 圓角半徑 -> 邊框 -> -> UIImageView圓角半徑 ->transform -> KVC

02-CALayer02-新建圖層

掌握

怎么顯示自己的圖層,直接加到控制器view的圖層,還得設(shè)置位置和尺寸,背景。

怎么給layer設(shè)置圖片,設(shè)置contents:看頭文件,contents必須是CGImageRef,UIImage先轉(zhuǎn)CGImageRef在轉(zhuǎn)id。

為什么圖層要的圖片和顏色使用CoreGraphics框架,不直接用UIKit框架。PPT解釋CALayer的疑惑

圖層也可以顯示,為什么還要UIView,PPT解釋CALayer的選擇

*講解順序 創(chuàng)建圖層 -> 位置 -> 背景 -> 內(nèi)容 -> CALayer疑惑 -> CALayer的選擇

3> 講解兩個非常重要的屬性position和anchorPoint錨點

掌握

什么是position

什么是anchorPoint,他的取值范圍,他在圖層的哪個位置,

*講解順序 PPT解釋 -> 注意點:0~1,1表示一個單位。 -> position設(shè)置圖層的位置 -> 一個圖層中很多點,哪個點移動到position.

4> 隱式動畫

03-CALayer03-隱式動畫

掌握:

只有非rootCalyer才有隱式動畫。

如何學(xué)習(xí)哪些屬性有隱式動畫,跳進CALayer頭文件,找animatable。

怎么演示隱式動畫,點擊屏幕就改變屬性。

怎么取消隱式動畫,每執(zhí)行一個動畫,開啟一個事物CATransaction,只要setDisableActions等于YES就好

*講解順序 PPT解釋 -> 監(jiān)聽控制器的點擊,點一下改變下屬性 -> 背景顏色,位置,邊框,圓角半徑

5> 時鐘-自定義圖層

程序思路:

* 了解時鐘由什么組成的,使用哪些控件。(UIImgeView,CALayer)

* 為什么不使用UIView,而使用CALayer,需要監(jiān)聽事件嗎?

* 現(xiàn)實生活中秒針是怎么旋轉(zhuǎn)的,繞著時鐘的中點轉(zhuǎn),PPT演示,拖一根秒針線條

* 在ios中默認是繞著中心點旋轉(zhuǎn)的,因為錨點默認在圖層的中點,要想繞著下邊中心點轉(zhuǎn),需要改變圖層錨點的位置。

* 根據(jù)錨點,設(shè)置position坐標,為時鐘的中點。

* 思考秒針旋轉(zhuǎn)的角度,怎么知道當(dāng)前秒針旋轉(zhuǎn)到哪,當(dāng)前秒針旋轉(zhuǎn)的角度 = 當(dāng)前秒數(shù) * 每秒轉(zhuǎn)多少°。

1> 計算一秒轉(zhuǎn)多少°360*60=6

2> 獲取當(dāng)前秒數(shù),通過日歷對象,獲取日期組成成分 NSCalendar -> NSDateComponents -> 獲取當(dāng)前秒數(shù)

* 每隔一秒,獲取最新秒數(shù),更新時鐘。

* 分鐘一樣的做法

* 時鐘也一樣

1.每一分鐘,時鐘也需要旋轉(zhuǎn),60分鐘 ->1小時 - >30°==》 每分鐘30/60.0一分鐘時針轉(zhuǎn)0.5°

* 把時針和秒針頭尾變尖,設(shè)置圓角半徑

6> 核心動畫01-CABasicAnimation

*PPT簡介

*Core Animation是直接作用在CALayer上的,并非UIView。

*Core Animation結(jié)構(gòu)

*Core Animation 使用步驟

*代碼演示

* 創(chuàng)建CALayer

* touchBegin,點擊屏幕,做動畫

* 創(chuàng)建動畫,添加動畫到CALayer

* 怎樣執(zhí)行動畫?執(zhí)行動畫的本質(zhì)是改變圖層的屬性。

* 告訴動畫執(zhí)行怎樣的動畫?設(shè)置動畫屬性(position)

* 告訴動畫屬性怎么改變?設(shè)置動畫屬性值改變 toValue fromValue

* duration:動畫時長

* 動畫有反彈?取消反彈

1> 執(zhí)行動畫完畢不要移除

2> 設(shè)置動畫填充模式,保持最新的位置。

* rotation:

三維旋轉(zhuǎn):transform

二維旋轉(zhuǎn):transform.rotation

* scale

* 設(shè)置圖層內(nèi)容(心)

* tovalue:@0.5

* 總結(jié)CABasicAnimation只能在兩個值之間做動畫,怎么多個值做動畫,用CAKeyframeAnimation

7> CAKeyframeAnimation

* 面向view開發(fā),拖一個view

* values:能多個值之間做動畫,按照順序做。

* path

* 動畫節(jié)奏(timingFunction)

* 代理

8> * 圖標抖動

* PPT分析,左邊旋轉(zhuǎn)右邊旋轉(zhuǎn) -> keyPath(transform.rotation) -> values -> 有點瘸 -> PPT分析 -> values添加一個值

9> * CATransition

過度動畫又叫轉(zhuǎn)場動畫 -> type(轉(zhuǎn)場類型) -> subtype(方向) -> 動畫進度

注意:轉(zhuǎn)場動畫必須和過度代碼放在一塊,否則沒有效果

10> * CAAnimationGroup

同時進行多種動畫 -> 平移,旋轉(zhuǎn),縮放 -> 取消反彈

11> * UIView封裝的動畫

* 什么時候用核心動畫,什么時候用UIView動畫

* 核心動畫的缺點:都是假象,不能真正改變圖層屬性的值

* 展示和真實的位置不同

* 如果改變位置就用UIView的動畫

* 轉(zhuǎn)場動畫就用核心動畫

* 為什么轉(zhuǎn)場用核心動畫?因為UIView的轉(zhuǎn)場動畫太少。

* 演示UIView的轉(zhuǎn)場動畫

* touchBegin,切換圖片

12> 轉(zhuǎn)盤

* 看素材分析控件(2個UIImgeView,1個按鈕)

* 自定義HMWheelView(處理轉(zhuǎn)盤功能,以后其他項目直接拷貝就好了)

* xib描述(界面固定,按鈕有兩種狀態(tài)的圖片)

* 添加按鈕,父控件是中間的那個UIImgeView,只有他需要旋轉(zhuǎn)。

* 在awakeFormNib添加,initWithCoder還沒連線。

* 按鈕的位置:PPT分析,所有按鈕的frame都一樣,但是根據(jù)不同的角標,旋轉(zhuǎn)不同的角度,相對上一個都旋轉(zhuǎn)30°。

1> 設(shè)置錨點:旋轉(zhuǎn)是繞著錨點旋轉(zhuǎn)的

2> 設(shè)置position

3> 設(shè)置尺寸

4> 形變,旋轉(zhuǎn)按鈕

* 按鈕選中的背景

* 監(jiān)聽按鈕點擊,允許父控件交互。

* 裁剪大圖片

* CGImageCreateWithImageInRect(CGImageRef image, CGRect rect)

* image:裁剪的圖片 rect:裁剪的尺寸

* CGImageRef 是 像素,而我們傳的是點坐標,轉(zhuǎn)換坐標系

* 旋轉(zhuǎn)轉(zhuǎn)盤:不能用核心動畫

* 搞個定時器,每隔一段時間旋轉(zhuǎn)一點角度,一秒旋轉(zhuǎn)45°,每次旋轉(zhuǎn)45/60,因為一秒調(diào)用60次,那個方法

* 給外界提供開始旋轉(zhuǎn)和停止旋轉(zhuǎn)兩個方法

* 監(jiān)聽開始旋轉(zhuǎn)按鈕

1> 不需要和用戶交互,用核心動畫

2> 快速旋轉(zhuǎn)的時候,暫停定時器,不需要同時旋轉(zhuǎn),會有問題

* 旋轉(zhuǎn)完之后,需要處理的業(yè)務(wù)邏輯

1> 允許用戶交互

2> 選中按鈕回到最上面中間位置,只要旋轉(zhuǎn)按鈕才知道自己旋轉(zhuǎn)了多少,反向旋轉(zhuǎn)這么多角度就好了,用make,把之前的旋轉(zhuǎn)全部清空。

3>2秒后自動旋轉(zhuǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容