import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
let types = [kCATransitionFade, kCATransitionPush, kCATransitionMoveIn, kCATransitionReveal, "cube", "suckEffect", "oglFlip", "rippleEffect", "pageCurl", "pageUnCurl", "cameraIrisHollowOpen", "cameraIrisHollowClose"];
let titles = ["淡化效果", "推进效果", "滑入效果", "滑出效果", "立方体效果", "吮吸效果", "翻转效果", "波纹效果", "翻页效果", "反翻页效果", "开镜头效果", "关镜头效果"];
let typess = [
kCATransitionFade, kCATransitionPush, kCATransitionMoveIn, kCATransitionReveal,
"pageCurl", "pageUnCurl",
"rippleEffect",
"suckEffect",
"cube", "alignedCube",
"flip", "alignedFlip", "oglFlip",
"rotate",
"cameraIris", "cameraIrisHollowOpen", "cameraIrisHollowClose"
]
let titless = [
"淡化效果", "推进效果", "滑入效果", "滑出效果",
"翻页效果", "反翻页效果",
"滴水效果",
"收缩/吮吸效果,如一块布被抽走",
"立方体效果", "立方体效果2",
"翻转效果", "翻转效果2", "翻转效果3",
"旋转",
"相机", "开镜头效果", "关镜头效果"
]
@IBAction func animationChange(_ sender: UIButton) {
//let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SecondVC")
//self.navigationController?.pushViewController(vc, animated: true)
let av = UIAlertController.init(title: nil, message: "动画切换", preferredStyle: .alert)
for i in 0..<titless.count {
let action1 = UIAlertAction.init(title: titless[i], style: .default) { [weak self] (action) in
self?.changeAnimation(type: (self?.typess[i])!, sub: kCATransitionFromLeft)
}
av.addAction(action1)
}
self.present(av, animated: true, completion: nil)
}
func changeAnimation(type: String, sub: String) {
let tvc = ThirdVC()
//转场动画
let transition = CATransition.init()
//动画时间
transition.duration = 0.5
/*
fade moveIn push reveal 和系统预设的四种一样
pageCurl pageUnCurl 翻页
rippleEffect 滴水效果
suckEffect 收缩效果,如一块布被抽走
cube alignedCube 立方体效果
flip alignedFlip oglFlip 翻转效果
rotate 旋转
cameraIris cameraIrisHollowOpen cameraIrisHollowClose 相机
*/
transition.type = type
//动画方向(在某些类型的动画里会失效f)(上:从下往上推出; 下:从上往下推出; 左:从左向 右推出; 右:从左向右 推出)
transition.subtype = sub
self.navigationController?.view.layer.add(transition, forKey: nil)
self.navigationController?.pushViewController(tvc, animated: false)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}