系统转场
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// 1.初始化
let transition = CATransition()
// 2.设置动画时长
transition.duration = 1.0
/*
3.设置切换速度效果
枚举值:
kCAMediaTimingFunctionLinear
kCAMediaTimingFunctionEaseIn
kCAMediaTimingFunctionEaseOut
kCAMediaTimingFunctionEaseInEaseOut
kCAMediaTimingFunctionDefault
*/
transition.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut)
/*
4.动画切换风格
枚举值:
kCATransitionFade = 1, // 淡入淡出
kCATransitionPush, // 推进效果
kCATransitionReveal, // 揭开效果
kCATransitionMoveIn, // 慢慢进入并覆盖效果
*/
transition.type = kCATransitionFade
/*
5.动画切换方向
枚举值:
kCATransitionFromRight//右侧
kCATransitionFromLeft//左侧
kCATransitionFromTop//顶部
kCATransitionFromBottom//底部
*/
transition.subtype = kCATransitionFromTop
// 6.进行跳转
navigationController?.view.layer.add(transition, forKey: nil)
// 跳转动画一定设置为NO,不然会两个效果叠加
navigationController?.pushViewController(TwoViewController(), animated: false)
}
Dome
网友评论