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