前言
在iOS中動畫效果可以給app加分不少淆两,其實實現(xiàn)動畫的過程并不復雜断箫,此博文將介紹常用的動畫拂酣。
目錄:
- CALayer
- Core Animation
- 基礎動畫 CABasicAnimation
- 關鍵幀動畫 CAKeyframeAnimation
- 動畫組 CAAnimationGroup
- 轉(zhuǎn)場動畫 CATransition
- 彈性動畫 CASpringAnimation
- UIView動畫封裝
CALayer
iOS中CALayer的設計主要是了為了內(nèi)容展示和動畫操作,CALayer本身并不包含在UIKit中仲义,它不能響應事件婶熬。由于CALayer在設計之初就考慮它的動畫操作功能,CALayer很多屬性在修改時都能形成動畫效果埃撵,這種屬性稱為“隱式動畫屬性”赵颅。但是對于UIView的根圖層而言屬性的修改并不形成動畫效果,因為很多情況下根圖層更多的充當容器的做用暂刘,如果它的屬性變動形成動畫效果會直接影響子圖層饺谬。另外,UIView的根圖層創(chuàng)建工作完全由iOS負責完成谣拣,無法重新創(chuàng)建募寨,但是可以往根圖層中添加子圖層或移除子圖層。
常用的CALayer屬性有:
屬性 | 說明 | 是否支持隱式動畫 |
---|---|---|
anchorPoint | 和中心點重合的一個點森缠,默認為(0.5,0.5) | 是 |
backgroundColor | 背景圖片 | 是 |
borderColor | 邊框顏色 | 是 |
borderWidth | 邊框?qū)挾?/td> | 是 |
bounds | 圖層大小 | 是 |
cornerRadius | 圓角半徑 | 是 |
hidden | 是否隱藏 | 是 |
mask | 圖層蒙版 | 是 |
maskToBounds | 子圖層是否剪切圖層邊界 | 是 |
opacity | 透明度 | 是 |
position | 中心點位置 | 是 |
shadowColor | 陰影顏色 | 是 |
shadowOffset | 陰影偏移量 | 是 |
shadowOpacity | 陰影透明度 | 是 |
shadowPath | 陰影形狀 | 是 |
shadowRadius | 陰影模糊半徑 | 是 |
transform | 圖層形變 | 是 |
frame | 位置 | 否 |
隱式動畫屬性的變化默認使用CABasicAnimation動畫實現(xiàn),如修改屬性不需要動畫遥金,則通過事務關閉隱式動畫:
CATransaction.begin()
CATransaction.setDisableActions(true)
rightBtn.layer.position = CGPoint.zero
CATransaction.commit()