最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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閱讀器與直播的控件重疊滑動交互詳解

    這篇文章主要介紹了iOS閱讀器與直播的控件發(fā)生重疊時滑動交互受到影響的問題,開發(fā)中某個控件出現(xiàn)在其它控件上方是和你常見的情況,但是如果影響到正常的交互這就會成為大問題,下面我們來了解一下
    2022-08-08
  • iOS9與XCode7中不能使用http連接的快速解決辦法

    iOS9與XCode7中不能使用http連接的快速解決辦法

    這篇文章主要介紹了iOS9與XCode7中不能使用http連接的快速解決辦法,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧,需要的朋友可以參考下
    2016-10-10
  • 詳解iOS webview加載時序和緩存問題總結(jié)

    詳解iOS webview加載時序和緩存問題總結(jié)

    本篇文章主要介紹了iOS webview加載時序和緩存問題總結(jié) ,這兩天學習了Vue.js 感覺組件這個地方知識點挺多的,而且很重要,所以,今天添加一點小筆記。
    2017-09-09
  • iOS開發(fā)之手動布局子視圖

    iOS開發(fā)之手動布局子視圖

    這篇文章主要介紹了iOS開發(fā)之手動布局子視圖,從入門到精通幫助大家更好的開發(fā)iOS項目,感興趣的小伙伴們可以參考一下
    2016-08-08
  • iOS9 系統(tǒng)分享調(diào)用之UIActivityViewController

    iOS9 系統(tǒng)分享調(diào)用之UIActivityViewController

    UIActivityViewController類是一個標準的view controller,通個使用這個controller,你的應(yīng)用程序就可以提供各種服務(wù)。本文給大家介紹iOS9 系統(tǒng)分享調(diào)用之UIActivityViewController,感興趣的朋友一起學習吧
    2015-11-11
  • IOS實戰(zhàn)之自定義轉(zhuǎn)場動畫詳解

    IOS實戰(zhàn)之自定義轉(zhuǎn)場動畫詳解

    這篇文章主要介紹了IOS實戰(zhàn)之自定義轉(zhuǎn)場動畫,CAAnimation的子類,用于做轉(zhuǎn)場動畫,能夠為層提供移出屏幕和移入屏幕的動畫效果,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 最新ios面試試題以及解決思路分析

    最新ios面試試題以及解決思路分析

    本篇內(nèi)容給大家整理了關(guān)于IOS程序員面試的試題以及相關(guān)解決方法,需要的朋友們參考一下吧。
    2017-12-12
  • Objective-C中使用NSString類操作字符串的方法小結(jié)

    Objective-C中使用NSString類操作字符串的方法小結(jié)

    這篇文章主要介紹了Objective-C中使用NSString類操作字符串的方法小結(jié),文中講到了字符串的分割和拼接等一些常見的用法,需要的朋友可以參考下
    2016-01-01
  • IOS繪制動畫顏色漸變折線條

    IOS繪制動畫顏色漸變折線條

    這篇文章主要介紹了IOS繪制動畫顏色漸變折線條的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕功能

    iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕功能

    最近的項目中有需求在tabbar中間添加凸起按鈕,并且點擊時按鈕要旋轉(zhuǎn),看了仿斗魚的凸起,點擊后是present出來View,這篇文章主要介紹了iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕,需要的朋友可以參考下
    2017-12-12

最新評論

柏乡县| 琼结县| 丰台区| 剑阁县| 托里县| 乌鲁木齐县| 金堂县| 镇远县| 元氏县| 南昌县| 高安市| 连城县| 漠河县| 鄂伦春自治旗| 沅陵县| 土默特右旗| 泰来县| 乌兰察布市| 莫力| 靖边县| 乌苏市| 贡山| 达日县| 读书| 临城县| 习水县| 榆树市| 平利县| 孝感市| 崇阳县| 翁源县| 蓬莱市| 花莲市| 保亭| 云龙县| 白山市| 高雄县| 桦甸市| 蓬莱市| 临湘市| 商都县|