看到網(wǎng)上關(guān)于Swift版本的Animation資料都比較少冒版,剛好我的項目中有需要這塊的資料面哼,有一位值得尊敬的老師有做過一個視頻隘马,也用到了這塊太防,但是只有動畫的呈現(xiàn),并沒有講到控制這塊酸员。當(dāng)是幫助記憶蜒车,在這里,寫一個基于UIImageView的Animation比較簡單的小例子幔嗦。
我們可以寫一個類酿愧,基于UIImageView,寫一個方法實現(xiàn)邀泉,讓控件對此類進(jìn)行綁定嬉挡,下面的例子是一個音樂播放器的imageView圓盤效果的動態(tài)旋轉(zhuǎn)實現(xiàn):
動畫啟動功能:
func OpenRotation(){ var animation = CABasicAnimation(keyPath: "transform.rotation") //申明動畫實例關(guān)鍵字 animation.fromValue = 0.0 //設(shè)置動畫的初始值 animation.toValue = M_PI*2.0 //設(shè)置動畫結(jié)束值(360°旋轉(zhuǎn)) animation.duration = 20 //動畫執(zhí)行時間 animation.repeatCount = 20000//動畫重復(fù)時間(老師有專門提這個數(shù)值必須設(shè)置得大寫起到持續(xù)重復(fù)) self.layer.addAnimation(animation,forKey:"xxx")//讓層執(zhí)行動畫實例,key如果沒有汇恤,可以是nil }
動畫暫停功能:
func OpenPause(){ //申明一個暫停時間為這個層動畫的當(dāng)前時間 let pausedTime:CFTimeInterval = layer.convertTime(CACurrentMediaTime(),fromLayer:nil) self.layer.speed = 0.0 //當(dāng)前層的速度 layer.timeOffset = pausedTime //層的停止時間設(shè)為上面申明的暫停時間 }
動畫繼續(xù)功能:
func OpenResume(){ let pausedTime:CFTimeInterval = layer.timeOffset // 當(dāng)前層的暫停時間 /** 層動畫時間的初始化值 **/ self.layer.speed = 1.0 self.layer.timeOffset = 0.0 self.layer.beginTime = 0.0 /** end **/ let timeSincePause:CFTimeInterval = layer.convertTime(CACurrentMediaTime(),formLayer:nil) let timePause = timeSincePause - pausedTime //計算從哪里開始恢復(fù)動畫 layer.beginTime = timePause //讓層的動畫從停止的位置恢復(fù)動效 }
就是以上這些了庞钢,基于這些,在一些小功能上也足夠用了因谎,當(dāng)然各位看官要是有其他的好的相關(guān)功能代碼基括,記得@我,??
PS: 這下終于正常了╮(╯▽╰)╭ 第一次用這個平臺寫文章财岔,真還得多學(xué)學(xué)