- 動畫是一個app的亮點(diǎn).
UIView動畫
- Layer類
1.CAEmitterLayer //粒子發(fā)射器
2.CAGradientLayer //漸變
3.CAEAGLLayer //可以通過OpenGL ES繪制界面
4.CAReplicatorLayer // 對sublayer進(jìn)行復(fù)制和屬性的偏移
5.CAScrollLayer // 支持其上管理的多個子層進(jìn)行滑動
6.CAShapeLayer // 自定義layer層形狀
7.CATextLayer //可以通過字符串進(jìn)行文字的繪制
8.CATiledLayer //類似瓦片視圖,可以將繪制分區(qū)域進(jìn)行,常用于一張大的圖片的分不分繪制
9.CATransformLayer //構(gòu)建一些3D效果的圖層
layer的渲染層與模型層:
1、presentationLayer
- Presentation Tree-對應(yīng)在動畫的過程中,CALayer的屬性
2、modelLayer
- Model Tree-對應(yīng)CALayer的實(shí)際屬性
CA動畫

GI-ZJ6BE%8-RKI1JDACEH78.jpg
CGAffineTransform 是用于2D層面的,操作 NSView, UIView或者其他 2D Core Graphics 元素的.
CATransform3D 是 Core Animation的結(jié)構(gòu)體,是用來做更復(fù)雜的關(guān)于 CALayer 的3D操作.CATransform3D 有著與 OpenGL 模型視圖矩陣相同的內(nèi)部結(jié)構(gòu),原因在于 Core Animation 是建立在 OpenGL 之上的, CALayer是 OpenGL 結(jié)構(gòu)的一種封裝.
CATransaction 針對的CALayer,UIView對應(yīng)的layer不可以。
UIDynamic動畫(仿真物理行為,如重力,彈性碰撞):
1.吸附行為(UIAttachmentBehavior):有一個對象UIAttachmentBehavior,該對象用來指定兩個動力項(xiàng)(項(xiàng)或點(diǎn))之間的連接,當(dāng)一個項(xiàng)或者點(diǎn)移動時,吸附的項(xiàng)也隨之移動。當(dāng)然,這個連接并不是完全是靜態(tài)的(static),吸附的項(xiàng)有兩個屬性damping(阻尼)和oscillation(震蕩),這兩個屬性決定了吸附項(xiàng)的行為是如何隨時間而變化的。
2.碰撞行為(UICollisionBehavior):通過對象UICollisionBehavior指定一個邊界,并且讓各個動力項(xiàng),在該邊界內(nèi)參與碰撞。UICollisionBehavior對象還可以指定這些動力項(xiàng)適當(dāng)?shù)幕貞?yīng)碰撞。
3.重力行為(UIGravityBehavior):通過對象UIGravityBehavior給動力項(xiàng)指定一個重力矢量,具有重力矢量的動力項(xiàng),會在重力矢量的方向上一直加速,直到與別的動力項(xiàng)產(chǎn)生了沖突或者,遇到了邊界。
4.推動行為(UIPushBehavior):通過對象UIPushBehavior給動力項(xiàng)指定一個持續(xù)的或者瞬時的力(force vector)。
5.捕捉行為(UISnapBehavior):通過對象UISnapBehavior給動力項(xiàng)指定一個捕捉點(diǎn)。動力項(xiàng)會根據(jù)配置的效果,來抓住這一捕捉點(diǎn)。
當(dāng)動力行為被添加到animator(UIDynamicAnimator類的實(shí)例對象)時,動力行為就被激活。animator為動力行為的執(zhí)行提供了上下文。動力項(xiàng)可以有多個行為,只不過所有這些行為都必須添加到相同的animator中。
參考:
http://www.it165.net/pro/html/201501/32903.html
http://my.oschina.net/u/2340880/blog/536048
http://www.itdecent.cn/p/f729f4a9b8e7
http://blog.csdn.net/lengshengren/article/details/12000649