View的曲線移動動畫
May 25, 2021
這是個讓View做曲線移動的簡單動畫,成果會是這樣

讓View做一個有曲線移動的動畫
首先先在畫面上加上一個正方形的View

用UIBezierPath在畫面上畫曲線,而這次不用和他的好朋友CAShapeLayer做搭配,因為我們沒有要將UIBezierPath畫的曲線顯示出來

創造一個CAKeyframeAnimation動畫

最後記得將這個動畫加到myView的layer上

完整程式碼
override func viewDidLoad() {super.viewDidLoad()//在畫面上加上一個view,位置可以隨意設置,因為之後會按照UIBezierPath所畫的路線做動畫let myView = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))myView.backgroundColor = colorLiteral(red: 0.1019607857, green: 0.2784313858, blue: 0.400000006, alpha: 1)view.addSubview(myView)//在畫面上畫一條曲線let path = UIBezierPath()//path的點移動到CGPoint(x: 300, y: 300)path.move(to: CGPoint(x: 300, y: 300))//畫曲線的方法path.addQuadCurve(to: CGPoint(x: 100, y: 300), controlPoint: CGPoint(x: 150, y: 50))//做一個keyframe的動畫,並設定keyPath為positionlet ani = CAKeyframeAnimation(keyPath: "position")//動畫時間ani.duration = 3//動畫路線ani.path = path.cgPath//需要將完成後的狀態保留需將設定以下兩個屬性ani.fillMode = .forwardsani.isRemovedOnCompletion = false//在myView上的layer加上動畫myView.layer.add(ani, forKey: nil)}//需要將完成後的狀態保留需將設定以下兩個屬性ani.fillMode = .forwardsani.isRemovedOnCompletion = false//在myView上的layer加上動畫myView.layer.add(ani, forKey: nil)}