iOS實現(xiàn)音樂播放器圖片旋轉(zhuǎn)
本文實例為大家分享了iOS實現(xiàn)音樂播放器圖片旋轉(zhuǎn)的具體代碼,供大家參考,具體內(nèi)容如下
通過給繼承與 UIImageView 的類 CXGImageView 添加 CABasicAnimation 轉(zhuǎn)動動畫,實現(xiàn)播放器圖片轉(zhuǎn)動效果.
主要提供三個方法: 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
/// 繼續(xù)動畫 func resumeRotate() { if isRotating { return } if self.layer.timeOffset == 0 { startRotating() return } let pausedTime = self.layer.timeOffset // 1. 讓CALayer的時間繼續(xù)行走 self.layer.speed = 1.0 // 2. 取消上次記錄的停留時刻 self.layer.timeOffset = 0.01 // 3. 取消上次設(shè)置的時間 self.layer.beginTime = 0.0 // 4. 計算暫停的時間(這里也可以用CACurrentMediaTime()-pausedTime) let timeWhenpause = self.layer.convertTime(CACurrentMediaTime(), from: nil) - pausedTime // 5. 設(shè)置相對于父坐標(biāo)系的開始時間(往后退timeSincePause) self.layer.beginTime = timeWhenpause isRotating = true }
注意: 使用中發(fā)現(xiàn),當(dāng)點下 Home 鍵再次返回應(yīng)用時,圖片停止轉(zhuǎn)動,需要將動畫 isRemovedOnCompletion 置成 false.
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS應(yīng)用開發(fā)中使用NSLocale類實現(xiàn)對象信息的本地化
這篇文章主要介紹了iOS應(yīng)用開發(fā)中使用NSLocale類實現(xiàn)對象信息的本地化的方法,能夠?qū)r間和貨幣等格式化為與系統(tǒng)本地設(shè)置相同的偏好,需要的朋友可以參考下2016-05-05使用SDLocalize實現(xiàn)高效完成iOS多語言工作
這篇文章主要介紹了使用SDLocalize實現(xiàn)高效完成iOS多語言工作的相關(guān)資料,需要的朋友可以參考下2022-10-10iOS AVPlayer切換播放源實現(xiàn)連續(xù)播放和全屏切換的方法
這篇文章主要給大家介紹了關(guān)于iOS中AVPlayer切換播放源實現(xiàn)連續(xù)播放和全屏切換的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05iOS NSURLSessionDownloadTask設(shè)置代理文件下載的示例
本篇文章主要介紹了iOS NSURLSessionDownloadTask設(shè)置代理文件下載的示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01iOS中containsString和rangeOfString的區(qū)別小結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于iOS中containsString和rangeOfString的一些區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01iOS自定義UIBarButtonItem的target和action示例代碼
這篇文章主要給大家介紹了關(guān)于iOS自定義UIBarButtonItem的target和action的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02