CATransition 動(dòng)畫主要在過(guò)渡時(shí)使用,比如兩個(gè)頁(yè)面層級(jí)改變的時(shí)候添加一個(gè)轉(zhuǎn)場(chǎng)效果。CATransition 分為兩類,一類是公開的動(dòng)畫效果,一類是非公開的動(dòng)畫效果。
1、公開動(dòng)畫效果(CATransitionType):
- .fade:翻頁(yè)
- .moveIn:彈出
- .push:推出
- .reveal:移除
2、非公開動(dòng)畫效果:
- "cube":立方體
- "suckEffect":吸收
- "oglFlip":翻轉(zhuǎn)
- "rippleEffect":波紋
- "pageCurl":卷頁(yè)
- "cameraIrisHollowOpen":鏡頭開
- "cameraIrisHollowClose":鏡頭關(guān)
3、動(dòng)畫方向類型(CATransitionSubtype):
- .fromRight:從右側(cè)開始實(shí)現(xiàn)過(guò)渡動(dòng)畫
- .fromLeft:從左側(cè)開始實(shí)現(xiàn)過(guò)渡動(dòng)畫
- .fromTop:從頂部開始實(shí)現(xiàn)過(guò)渡動(dòng)畫
- .fromBottom:從底部開始實(shí)現(xiàn)過(guò)渡動(dòng)畫
4、下面通過(guò)一個(gè)樣例演示:
頁(yè)面上添加兩個(gè)分別是紅色,藍(lán)色的 UIView。當(dāng)點(diǎn)擊屏幕的時(shí)候,這兩個(gè) UIView 層級(jí)切換,同時(shí)會(huì)有從左向右推出的效果。
代碼:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let redView:UIView = UIView(frame: CGRect(x:20, y:20, width:280, height:400))
redView.backgroundColor = UIColor.red
self.view.insertSubview(redView, at: 0)
let blueView:UIView = UIView(frame: CGRect(x:20, y:20, width: 280, height:400))
blueView.backgroundColor = UIColor.blue
self.view.insertSubview(blueView, at: 1)
}
//點(diǎn)擊切換兩個(gè)紅藍(lán)視圖
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let transition = CATransition()
transition.duration = 3.0
transition.type = kCATransitionPush //推送類型
transition.subtype = kCATransitionFromLeft //從左側(cè)
self.view.exchangeSubview(at: 1, withSubviewAt: 0)
self.view.layer.add(transition, forKey: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
原文出自:www.hangge.com