您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關iOS實現音樂播放器圖片旋轉示例,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
通過給繼承與 UIImageView 的類 CXGImageView 添加 CABasicAnimation 轉動動畫,實現播放器圖片轉動效果.
主要提供三個方法: startRotating, stopRotating,resumeRotate
startRotating
/// 開始動畫 func startRotating() { let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation") rotateAnimation.isRemovedOnCompletion = false // 避免點擊 Home 鍵返回,動畫停止 rotateAnimation.fromValue = 0.0 rotateAnimation.toValue = Double.pi * 2 rotateAnimation.duration = 20 rotateAnimation.repeatCount = MAXFLOAT self.layer.add(rotateAnimation, forKey: nil) isRotating = true }
stopRotating
/// 停止動畫 func stopRotating() { if !isRotating { return } let pausedTime = self.layer.convertTime(CACurrentMediaTime(), from: nil) // 讓CALayer的時間停止走動 self.layer.speed = 0 // 讓CALayer的時間停留在pausedTime這個時刻 self.layer.timeOffset = pausedTime isRotating = false }
resumeRotate
/// 繼續動畫 func resumeRotate() { if isRotating { return } if self.layer.timeOffset == 0 { startRotating() return } let pausedTime = self.layer.timeOffset // 1. 讓CALayer的時間繼續行走 self.layer.speed = 1.0 // 2. 取消上次記錄的停留時刻 self.layer.timeOffset = 0.01 // 3. 取消上次設置的時間 self.layer.beginTime = 0.0 // 4. 計算暫停的時間(這里也可以用CACurrentMediaTime()-pausedTime) let timeWhenpause = self.layer.convertTime(CACurrentMediaTime(), from: nil) - pausedTime // 5. 設置相對于父坐標系的開始時間(往后退timeSincePause) self.layer.beginTime = timeWhenpause isRotating = true }
注意: 使用中發現,當點下 Home 鍵再次返回應用時,圖片停止轉動,需要將動畫 isRemovedOnCompletion 置成 false.
看完上述內容,你們對iOS實現音樂播放器圖片旋轉示例有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。