自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Core Animation編程指南

移動開發(fā) iOS
本文將簡介Core Animation的編程指南。Core Animation是一個Objc類庫,它提供基于熟悉的視圖抽象,可以使用樹狀的對象體系創(chuàng)建復(fù)雜的用戶界面、輕量的數(shù)據(jù)結(jié)構(gòu)??梢酝瑫r對上百個層進(jìn)行展示和動畫等功能。

Core Animation是一個Objc類庫,用于處理圖像渲染,投射和動畫。

它提供以下功能:

通過簡單的編程模型提供高性能的合成效果。

基于熟悉的視圖抽象,可以使用樹狀的對象體系創(chuàng)建復(fù)雜的用戶界面

輕量的數(shù)據(jù)結(jié)構(gòu)??梢酝瑫r對上百個層進(jìn)行展示和動畫。

抽象的動畫接口,能夠讓動畫運(yùn)行在獨(dú)立的線程。一旦動畫配制完畢并啟動后,Core Animation將負(fù)責(zé)它的運(yùn)行和楨速。

提升應(yīng)用程序性能。程序只需要在變化時重畫。將應(yīng)用程序在resize時需要做的處理降到最低并提供layout服務(wù)層,Core Animation讓你不再需要手動處理楨速。

靈活的layout管理器模型,自帶的管理器能讓你指定層和其兄弟層的相對位置和大小。

使用 Core Animation,開發(fā)者不再需要底層圖形接口就可以創(chuàng)建高性能的動態(tài)用戶界面了。

Core Animation類體系

 

images/lk_class_hierarchy.jpg

Core Animation類圖Core Animation的類可分為以下幾組:

提供展示的內(nèi)容的Layer類

Animation 和 timing 類

Layout 和 constraint 類

將多個修改合成一個原子更新操作的事務(wù)類

基本的 Core Animatin 類包含在 Quartz Core 框架中,也有另外的layer類在其他框架中定義。下圖展示了 Core Animation 的類體系。

CALayer

CALayer 是Core Animation的基礎(chǔ),它的作用類似于 NSView 。每一個 CALayer 可以擁有一個父層和多個子層,由此形成一個樹狀結(jié)構(gòu)的體系,叫做 layer tree。

層從后往前的順序進(jìn)行渲染,子層基于和父層相對的局部坐標(biāo)系統(tǒng)。還可以對層進(jìn)行矩陣轉(zhuǎn)換以實(shí)現(xiàn)復(fù)雜的展示效果.

在 CALayer 中,除了繼承還有多種方式可以為它提供顯示的內(nèi)容,這一點(diǎn)有別于其他視圖類:

把層的 content 屬性設(shè)置為Core Graphics image,或者代理

提供代理對Core Graphics image context進(jìn)行畫圖

設(shè)置層公用的一些可視化屬性,比如背景色,透明度等

Subclassing CALayer and implementing any of the above techniques in a more encapsulated manner.

動畫和時間函數(shù)

層的很多可視屬性都可以產(chǎn)生隱式動畫,這些屬性稱為可動畫屬性,修改層的可動畫屬性自動就會產(chǎn)生從當(dāng)前值變化到目標(biāo)值的動畫,比如設(shè)置層的hidden屬性為YES,就會產(chǎn)生一個淡出的動畫。大部分可動畫屬性都有默認(rèn)的動畫,這些動畫也是可以定制的。

可動畫屬性也可以進(jìn)行顯式動畫,要創(chuàng)建顯式動畫你可以創(chuàng)建Core Animation動畫類的實(shí)例并指定視覺效果,顯式動畫不會修改層對象的屬性值,它僅僅是展示動畫效果而已。

Core Animation既提供基本動畫也提供關(guān)鍵楨動畫,你可以對層的整個內(nèi)容進(jìn)行動畫也可以對部分屬性進(jìn)行動畫。所有動畫類都繼承自抽象類 CAAnimation 。 CAAnimation 遵守 CAMediaTiming 協(xié)議,可以對動畫進(jìn)行簡單的時長,速度,重復(fù)次數(shù)控制。它還遵守 CAAction 協(xié)議,可以讓動畫在層觸發(fā)action時啟動.

動畫類還定義了描述動畫速度的基于簡單bezier曲線的時間函數(shù)。比如ease-out時間函數(shù)會讓動畫在快結(jié)束的時候減速。

Core Animation提供了許多或具體或抽象的動畫類:

CATransition 提供作用于整個層的轉(zhuǎn)換效果。你還可以通過自定義的Core Image filter擴(kuò)展轉(zhuǎn)換效果。

CAAnimationGroup 可以打包多個動畫對象并讓他們同時執(zhí)行。

CAPropertyAnimation 支持基于屬性關(guān)鍵路徑的動畫。

CABasicAnimation 對屬性做簡單的插值

CAKeyframeAnimation 對關(guān)鍵楨動畫提供支持。指定需要動畫屬性的關(guān)鍵路徑,一個表示每一個階段對應(yīng)的值的數(shù)組,還有一個關(guān)鍵楨時間和時間函數(shù)的數(shù)組。動畫運(yùn)行時,依次設(shè)置每一個值的指定插值。

Layout管理類

Mac OS X 的 Core Animation 還提供更靈活的機(jī)制可以讓你自己編寫自定義的 layout 管理器。

Core Animation 的 CAConstraint 類是個layout管理器,它根據(jù)你指定的約束條件對子層進(jìn)行排列。每一個約束條件(封裝在 CAConstraint 類的實(shí)例中)描述層和兄弟層或父層之間的幾何屬性的關(guān)系。

事務(wù)管理類

對可動畫屬性的任何修改都應(yīng)該在事務(wù)中完成。 CATransition 類負(fù)責(zé)將多個動畫操作打包成原子更新操作然后執(zhí)行。支持嵌套事務(wù)。

Core Animation 支持兩種事務(wù):隱式和顯式。在當(dāng)前沒有事務(wù)的情況下對可動畫屬性進(jìn)行修改會自動創(chuàng)建一個隱式的事務(wù),在當(dāng)前線程下一次迭代時自動提交。要創(chuàng)建顯式事務(wù),在對層進(jìn)行修改之前給 CATransition 類發(fā)一個 begin 消息,修改后再發(fā)一個 commit 消息。

責(zé)任編輯:佚名 來源: yi-programmer
相關(guān)推薦

2014-12-31 13:31:31

圖形動畫翻頁

2011-08-09 17:21:37

2011-07-03 10:12:35

Core Animat

2011-07-03 10:05:52

Core Animat

2011-08-16 18:38:23

Core Animat動畫

2011-06-13 15:00:00

Cocoa TouchiOS

2011-07-29 09:45:11

iOS 圖形圖像 Core Anima

2011-07-18 16:57:36

Core Animation 動畫

2015-07-27 10:27:32

IOS基礎(chǔ)知識核心動畫

2011-08-17 14:27:17

Core AnimatQuartz2D

2010-11-17 11:31:22

Scala基礎(chǔ)面向?qū)ο?/a>Scala

2024-06-11 09:00:00

異步編程代碼

2010-07-20 13:32:25

Perl編程格式

2011-12-12 11:16:02

iOS并發(fā)編程

2017-01-12 14:55:50

JavaScript編程

2023-01-18 23:20:25

編程開發(fā)

2015-09-22 10:04:38

GoogleJava編程

2017-02-13 13:14:07

2010-09-14 13:22:17

Scala編程指南Scala

2025-01-10 00:41:38

版本控制API
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號