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

iOS CAReplicatorLayer實現(xiàn)脈沖動畫效果

 更新時間:2017年06月06日 16:28:07   作者:Silence_cnblogs  
這篇文章主要介紹了iOS CAReplicatorLayer實現(xiàn)脈沖動畫效果 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下

iOS CAReplicatorLayer 實現(xiàn)脈沖動畫效果,供大家參考,具體內(nèi)容如下

效果圖

脈沖數(shù)量、速度、半徑、透明度、漸變顏色、方向等都可以設(shè)置。可以用于地圖標注(Annotation)、按鈕長按動畫效果(例如錄音按鈕)等。

代碼已上傳 GitHub:https://github.com/Silence-GitHub/CoreAnimationDemo

實現(xiàn)原理

實現(xiàn)方法參考:https://github.com/shu223/Pulsator

但是覺得那些代碼不夠簡潔,所以自己寫了一個,還加了些功能。

自定義 PulsatorLayer,繼承自 CAReplicatorLayer。CAReplicatorLayer 可以復(fù)制子圖層(Sublayer),被復(fù)制出來的子圖層可以改變位置、顏色等屬性。每一個脈沖(一個漸變的圓形)就是一個被復(fù)制出來的子圖層。

顯示脈沖的圖層就是子圖層,把它作為 pulseLayer 屬性

private var pulseLayer: CALayer!

脈沖子圖層一開始不顯示,因此初始化時為全透明;通過設(shè)置圓角,使 pulseLayer 為圓形

pulseLayer = CALayer()
pulseLayer.opacity = 0
pulseLayer.backgroundColor = outColor
pulseLayer.contentsScale = UIScreen.main.scale
pulseLayer.bounds.size = CGSize(width: maxRadius * 2, height: maxRadius * 2)
pulseLayer.cornerRadius = maxRadius
addSublayer(pulseLayer)

設(shè)置 CAReplicatorLayer 的一些屬性

// The number of copies to create, including the source layers
instanceCount
// Specifies the delay, in seconds, between replicated copies
instanceDelay

設(shè)置復(fù)制子圖層的數(shù)量、創(chuàng)建兩個子圖層之間的時間間隔。

CAReplicatorLayer 遵循 CAMediaTiming 協(xié)議,設(shè)置協(xié)議屬性

// Determines the number of times the animation will repeat
repeatCount = MAXFLOAT

把動畫重復(fù)次數(shù)設(shè)置為很大的數(shù),讓動畫一直重復(fù)。

動畫效果由 3 個 CABasicAnimation 組成,分別改變脈沖的大小、透明度、背景色顏色

let scaleAnimation = CABasicAnimation(keyPath: "transform.scale.xy")
scaleAnimation.duration = animationDuration

let opacityAnimation = CABasicAnimation(keyPath: "opacity")
opacityAnimation.duration = animationDuration

let colorAnimation = CABasicAnimation(keyPath: "backgroundColor")
colorAnimation.duration = animationDuration

switch pulseOrientation {
case .out:
  scaleAnimation.fromValue = minRadius / maxRadius
  scaleAnimation.toValue = 1
  
  opacityAnimation.fromValue = maxAlpha
  opacityAnimation.toValue = minAlpha
  
  colorAnimation.fromValue = inColor
  colorAnimation.toValue = outColor
  
case .in:
  scaleAnimation.fromValue = 1
  scaleAnimation.toValue = minRadius / maxRadius
  
  opacityAnimation.fromValue = minAlpha
  opacityAnimation.toValue = maxAlpha
  
  colorAnimation.fromValue = outColor
  colorAnimation.toValue = inColor
}

let animationGroup = CAAnimationGroup()
animationGroup.duration = animationDuration + animationInterval
animationGroup.animations = [scaleAnimation, opacityAnimation, colorAnimation]
animationGroup.repeatCount = repeatCount
pulseLayer.add(animationGroup, forKey: kPulseAnimationKey)

以上代碼判斷了脈沖的方向(由內(nèi)向外、由外向內(nèi)),兩種方向的動畫屬性起止取值相反。把這 3 個 CABasicAnimation 加入 CAAnimationGroup 中一起執(zhí)行。

以上就是實現(xiàn)原理與最核心的代碼,具體見 GitHub:https://github.com/Silence-GitHub/CoreAnimationDemo

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

相關(guān)文章

  • iOS中圖片的解壓縮到渲染過程詳解

    iOS中圖片的解壓縮到渲染過程詳解

    這篇文章主要給大家介紹了關(guān)于iOS中圖片的解壓縮到渲染過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • iOS開發(fā)實現(xiàn)簡單計算器功能

    iOS開發(fā)實現(xiàn)簡單計算器功能

    這篇文章主要為大家詳細介紹了iOS開發(fā)實現(xiàn)簡單計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • IOS 創(chuàng)建并發(fā)線程的實例詳解

    IOS 創(chuàng)建并發(fā)線程的實例詳解

    這篇文章主要介紹了IOS 創(chuàng)建并發(fā)線程的實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 詳解iOS開發(fā)中app的歸檔以及偏好設(shè)置的存儲方式

    詳解iOS開發(fā)中app的歸檔以及偏好設(shè)置的存儲方式

    這篇文章主要介紹了iOS開發(fā)中app的歸檔以及偏好設(shè)置的存儲方式,示例代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-12-12
  • iOS 監(jiān)聽回調(diào)機制KVO實例

    iOS 監(jiān)聽回調(diào)機制KVO實例

    下面小編就為大家分享一篇iOS 監(jiān)聽回調(diào)機制KVO實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • IOS初始化控制器的實現(xiàn)方法總結(jié)

    IOS初始化控制器的實現(xiàn)方法總結(jié)

    這篇文章主要介紹了IOS初始化控制器的實現(xiàn)方法總結(jié)的相關(guān)資料,這里提供兩種實現(xiàn)方法分別是ViewControllViewController方法和 ViewControllViewController 與 xib方法,需要的朋友可以參考下
    2017-10-10
  • iOS?實現(xiàn)類似抖音滾動效果

    iOS?實現(xiàn)類似抖音滾動效果

    這篇文章主要介紹了iOS?實現(xiàn)類似抖音滾動效果,整體思路是我們將tableView 的contentinset設(shè)置為上面一個屏幕的高度,下面一個屏幕的高度,左右為0,這樣保證我們滾動過去的時候
    都是準備好的內(nèi)容,需要的朋友可以參考下
    2024-06-06
  • IOS 圓球沿著橢圓軌跡做動畫

    IOS 圓球沿著橢圓軌跡做動畫

    這篇文章主要介紹了IOS 圓球沿著橢圓軌跡做動畫的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • iOS 清除xcode緩存和生成文件的方法

    iOS 清除xcode緩存和生成文件的方法

    下面小編就為大家分享一篇iOS 清除xcode緩存和生成文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS中WKWebView白屏問題的分析與解決

    iOS中WKWebView白屏問題的分析與解決

    最近在工作中遇到了WKWebView白屏的問題,所以這篇文章主要給大家介紹了關(guān)于iOS中WKWebView白屏問題的分析與解決方法,文中通過示例代碼介紹的非常詳細,對同樣遇到這個問題的朋友具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10

最新評論