swift的动画是做的很棒的 今天了解到CATransition,其动画有几种样式可以拿来使用,同时也可以自定义,感觉蛮不错的。
//
// ViewController.swift
// see cube
//
// Created by Mengduan on 2023/7/11.
//
import UIKit
class ViewController: UIViewController {
var swipeGesture = UISwipeGestureRecognizer()
var num = 0
lazy var guideView1:UIView = {
let view = UIView(frame: self.view.frame)
var guideView = UIImageView(frame: self.view.frame)
guideView.isUserInteractionEnabled = true
guideView.image = UIImage(named: "引导页1")
guideView.layer.zPosition = 4
view.addSubview(guideView)
return view
}()
lazy var guideView2:UIView = {
let view = UIView(frame: self.view.frame)
var guideView = UIImageView(frame: self.view.frame)
guideView.isUserInteractionEnabled = true
guideView.image = UIImage(named: "引导页2")
guideView.layer.zPosition = 4
view.addSubview(guideView)
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.view.clipsToBounds = true
self.view.addSubview(guideView1)
self.view.addSubview(guideView2)
self.swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.changePage))
self.swipeGesture.direction = .left
self.view.addGestureRecognizer(self.swipeGesture)
}
}
extension ViewController{
@objc func changePage(){
let transition = CATransition()
transition.duration = 2.0
transition.type = .init(rawValue: "cube")
transition.subtype = .fromRight
self.view.layer.add(transition, forKey: nil)
//MARK: 交换子视图 guideView1 和 guideView2 (子视图逻辑)
self.view.exchangeSubview(at: 1, withSubviewAt: 0)
if (num == 1){
self.view.removeGestureRecognizer(swipeGesture)
guideView1.removeFromSuperview()
guideView2.removeFromSuperview()
self.tabBarController?.tabBar.isHidden = false
}else{
num = 1
}
}
}
基本的有:
.fade 淡出
.moveIn 推进
.push 平移
.reveal 推出
尝试过 可用的有:
cube 方块
pageCurl 上翻页(翻书)
pageUnCurl 下翻页
oglFlip 上下翻转
参考: