欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS CoreAnimation中l(wèi)ayer動畫閃爍的解決方法

 更新時(shí)間:2016年06月01日 11:40:19   作者:大熊貓侯佩  
這篇文章主要為大家詳細(xì)介紹了IOS CoreAnimation中l(wèi)ayer動畫閃爍的原因,分享了layer動畫閃爍的解決方法,感興趣的小伙伴們可以參考一下

網(wǎng)上有一段Core Animation層動畫的例子,是將view中的云朵從左向右移動,直到移出屏幕,這時(shí)再將云朵移到最左端然后重復(fù)移動動畫.

所有動畫在layer上完成,不過有個(gè)小問題,就是第一次每朵云動畫完成時(shí),會在其原位置處有一個(gè)閃爍,然后才會移動到屏幕最右端,而隨后的運(yùn)動動畫都沒有這個(gè)問題了:

由于錄制gif文件時(shí)使用的幀率比較低,所以上圖較難展示這個(gè)問題.不過實(shí)際App運(yùn)行的時(shí)候每朵云在第一次移出屏幕的時(shí)候都會在初始位置閃爍一下再運(yùn)行隨后的動畫.這是為什么呢?

因?yàn)閘ayer動畫不同于view層面上的動畫,它實(shí)際不會修改原始view的任何屬性.就拿云朵移動的動畫來說,你雖然看上去改變了云朵的x坐標(biāo)使其向右移動,可實(shí)際上原來的云朵ImageView根本還在原地,只不過CA用其外觀創(chuàng)建了一個(gè)臨時(shí)繪制進(jìn)行移動,原來的云朵被暫時(shí)隱藏起來;一旦移動動畫完成,該臨時(shí)對象被刪除,原來的云朵會在初始位置出現(xiàn).

那么為什么只有動畫第一次會出現(xiàn)閃爍呢?因?yàn)樵诘谝淮蝿赢嫿Y(jié)束后,我在代碼中修改了云朵view的x坐標(biāo),所以后面云朵的x坐標(biāo)都和layer動畫的fromValue相同,這將保證后續(xù)動畫不會發(fā)生”閃爍”。

知道了原因,解決就很簡單了,我只要在第一次動畫前將云朵的x坐標(biāo)修改為指定的位置,同時(shí)調(diào)整fromValue的值為初始位置即可:

func animateCloud(layer:CALayer){
 let cloudSpeed = 15.0/Double(view.layer.frame.size.width)
 let duration:NSTimeInterval = Double(view.layer.frame.size.width - layer.frame.origin.x) * cloudSpeed
 //提前存儲云朵layer的初始位置 
 let fromValue = layer.position
 //設(shè)置云朵的最終位置
 layer.position.x = -layer.bounds.width/2

 let cloudMove = CABasicAnimation(keyPath: "position.x")
 cloudMove.fillMode = kCAFillModeForwards
 //cloudMove.removedOnCompletion = false
 cloudMove.duration = duration
 //設(shè)置云朵的初始位置
 cloudMove.fromValue = fromValue.x
 cloudMove.toValue = self.view.bounds.size.width + layer.bounds.width/2
 cloudMove.delegate = self
 cloudMove.setValue("cloud", forKey: "name")
 cloudMove.setValue(layer, forKey: "layer")
 layer.addAnimation(cloudMove, forKey: nil)
 }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS輸入框(UITextField)密碼明暗文切換方法

    iOS輸入框(UITextField)密碼明暗文切換方法

    這篇文章主要介紹了iOS輸入框(UITextField)密碼明暗文的切換方法,代碼簡短實(shí)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • iOS逆向教程之跟蹤函數(shù)調(diào)用詳解

    iOS逆向教程之跟蹤函數(shù)調(diào)用詳解

    這篇文章主要給大家介紹了關(guān)于iOS逆向教程之跟蹤函數(shù)調(diào)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • iOS 基于AFNetworking下自簽名證書配置的方法

    iOS 基于AFNetworking下自簽名證書配置的方法

    本篇文章主要介紹了iOS 基于AFNetworking下自簽名證書配置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • IOS中計(jì)算緩存文件的大小判斷實(shí)例詳解

    IOS中計(jì)算緩存文件的大小判斷實(shí)例詳解

    這篇文章主要介紹了IOS中計(jì)算緩存文件的大小判斷實(shí)例詳解的相關(guān)資料,希望通過本能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • iOS實(shí)現(xiàn)百度外賣頭像波浪的效果

    iOS實(shí)現(xiàn)百度外賣頭像波浪的效果

    對于現(xiàn)在很多人來說,叫外賣就成了不可或缺的習(xí)慣。某日瞬間發(fā)現(xiàn)百度外賣的APP波浪效果很是吸引人,相比較其他的外賣APP,顏值略高些.(淘寶也有波浪的效果),遂就思考如何實(shí)現(xiàn)這種"浪"的效果,下面來一起看看。
    2016-08-08
  • iOS的UI開發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu)介紹

    iOS的UI開發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu)介紹

    這篇文章主要介紹了iOS的UI開發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-12-12
  • ios 獲取或修改網(wǎng)頁上的內(nèi)容

    ios 獲取或修改網(wǎng)頁上的內(nèi)容

    UIWebView是iOS最常用的SDK之一,它有一個(gè)stringByEvaluatingJavaScriptFromString方法可以將javascript嵌入頁面中,通過這個(gè)方法我們可以在iOS中與UIWebView中的網(wǎng)頁元素交互
    2016-12-12
  • iOS實(shí)現(xiàn)微信搖一搖功能

    iOS實(shí)現(xiàn)微信搖一搖功能

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)微信搖一搖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 基于iOS Realm數(shù)據(jù)庫的使用實(shí)例詳解

    基于iOS Realm數(shù)據(jù)庫的使用實(shí)例詳解

    下面小編就為大家分享一篇基于iOS Realm數(shù)據(jù)庫的使用實(shí)例詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS 10即將來襲!升級你的iOS開發(fā)裝備

    iOS 10即將來襲!升級你的iOS開發(fā)裝備

    iOS 10來了!你必需的10款iOS開發(fā)必備工具,讓你的開發(fā)過程事半功倍
    2016-07-07

最新評論