相信大家在做電商類的App的時候,一定都會遇到關于購物車的需求,這時候,如果給購物車添加一些動畫,這樣的話,效果會更加的逼真。
直接進入正題吧。還是老規矩,有圖有真相:
//負責旋轉 rotation let basicAnimation = CABasicAnimation(keyPath: "transform.rotation") basicAnimation.isRemovedOnCompletion = true basicAnimation.fromValue = NSNumber(value: 0) basicAnimation.toValue = NSNumber(value: 3 * 2 * M_PI)//這里是旋轉的角度 共是:3圈 (2 * M_PI)是一圈 basicAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)這里是的keyPath的路徑'transform.rotation.z',當然這里不要是不寫z的話,也是可以的,因為默認的也是繞Z軸旋轉,順便說一下,我們iOS手機端的是左手定則,mac開發是右手定則。M_PI是半圈,所以這里的3 * 2 * M_PI是三圈。4.物體移動路線的制定。
//創建路徑 其路徑是拋物線 let path : UIBezierPath = UIBezierPath() path.move(to: (layer?.position)!) path.addQuadCurve(to: finishPoint, controlPoint:CGPoint(x: myWindow.frame.size.width/2, y: rect.origin.y - 40)) //這里要使用組合動畫 一個負責旋轉,另一個負責曲線的運動 //創建 關鍵幀動畫 負責曲線的運動 let pathAnimation : CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "position")//位置的平移 pathAnimation.path = path.cgPath估計有的同學也猜到了,這里的keyPath是'position'。當然這里指的是物體的位移(Z坐標為0,平移),可能有同學對addQuadCurve(),不是特別的了解,下面的我也上傳一張圖片,估計大部分都會瞬間懂了。不是很簡單呀,這是在初三的時候學的拋物線。二次方程,不過在這里我要感謝我的龔成同學。這里的里面的controllPoint點就A,B,C,中的A點,是不是瞬間大家都懂了。
5.組合動畫的實現的代碼
let groups : CAAnimationGroup = CAAnimationGroup() groups.animations = [pathAnimation,basicAnimation] groups.duration = 1.5//國際單位制 S groups.fillMode = kCAFillModeForwards groups.isRemovedOnCompletion = false groups.delegate = self self.layer?.add(groups, forKey: "groups")這里面就是設置一些動畫的時間和代理什么的。好了,到此為止,關鍵的代碼都已經講解完了。總結
其實iOS中的動畫不是很難,不過數學的基礎要相對好點,這樣的話,學起動畫來,可能更方便和快速。其下載的連接:https://github.com/WSmalan/Swift-BuyGoodsCar如有問題的可直接評論,或者通過以下方式聯系筆者:QQ: 3145419760微信號:WsMl0612郵箱:wusong_gongzuo@163.com
新聞熱點
疑難解答