老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

iOSCAReplicatorLayer實現脈沖動畫效果

iOS CAReplicatorLayer 實現脈沖動畫效果,供大家參考,具體內容如下

創新互聯主營當陽網站建設的網絡公司,主營網站建設方案,成都app軟件開發公司,當陽h5微信小程序搭建,當陽網站營銷推廣歡迎當陽等地區企業咨詢

效果圖

iOS CAReplicatorLayer實現脈沖動畫效果

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

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

實現原理

實現方法參考:https://github.com/shu223/Pulsator

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

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

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

private var pulseLayer: CALayer!

脈沖子圖層一開始不顯示,因此初始化時為全透明;通過設置圓角,使 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)

設置 CAReplicatorLayer 的一些屬性

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

設置復制子圖層的數量、創建兩個子圖層之間的時間間隔。

CAReplicatorLayer 遵循 CAMediaTiming 協議,設置協議屬性

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

把動畫重復次數設置為很大的數,讓動畫一直重復。

動畫效果由 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)

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。


當前名稱:iOSCAReplicatorLayer實現脈沖動畫效果
文章出自:http://www.xueling.net.cn/article/psdehh.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 嫩草影院永久久久精品 | 热久久免费视频 | 狠狠躁夜夜躁人人爽蜜桃 | 久久国产激情 | 国产视频1 | 狠狠操狠狠搞 | 91视频入口 | 必射视频| 无码内射中文字幕岛国片 | 浮生影视在线观看免费 | 国产精品视频在 | wwww.黄 | 日本中文字幕中出在线 | 精品欧美国产一区二区三区不卡 | 少妇大叫太大太粗太爽了A片 | 亚洲精品无码久久毛片 | 俄罗斯胖老太牲交 | 久久久999成人 | 亚洲美女精品视频 | 99久久国产宗和精品1上映 | 在线看片免费人成视频大全 | www国产亚洲精品久久网站 | 欧美狠狠操 | 99热99这里只有高清国产 | 国产精品久久人妻无码hd | 粉色视频成人免费观看 | 97精品国产97久久久久久久久久久久 | av天天在线| 欧美国产激情一区二区三区蜜月 | 久久ク成人精品中文字幕 | 国产精品WWW夜色视频 | 69精品人人槡人妻人人玩 | 一区二区亚洲欧美在线 | 久久久av大桥未久一区二区 | 成年人观看免费视频 | 精品欧美国产一区二区三区不卡 | 在线中文字幕一区 | 91日日| 日韩第一区第二区 | 999久久久久久久久6666 | 成人亚洲欧美久久久久 |