IOS 動(dòng)畫粒子效果

在學(xué)習(xí)動(dòng)畫的過程中,例子中有一個(gè)下雪的動(dòng)畫場景。用到的是粒子動(dòng)畫,覺得很神奇,特此記錄一下
snowView

import UIKit
import QuartzCore

class SnowView: UIView {
  
  override init(frame: CGRect) {
    super.init(frame: frame)
    
    let emitter = layer as! CAEmitterLayer  //粒子發(fā)射工廠
    emitter.emitterPosition = CGPoint(x: bounds.size.width / 2, y: 0)  //決定粒子發(fā)射形狀的中心點(diǎn)
    emitter.emitterSize = bounds.size  //決定粒子發(fā)射形狀的大小 決定了矩形的大小
    emitter.emitterShape = kCAEmitterLayerRectangle  //設(shè)置粒子從什么形狀發(fā)射出來 rectangle代表矩形。意思就是從矩形的嘴里面吐出粒子
    
    let emitterCell = CAEmitterCell()  //粒子
    emitterCell.contents = UIImage(named: "flake.png")!.cgImage
    emitterCell.birthRate = 200  //粒子產(chǎn)生的數(shù)量
    emitterCell.lifetime = 3.5   //粒子的生命周期
    emitterCell.color = UIColor.white.cgColor  //粒子顏色
    emitterCell.redRange = 0.0  //
    emitterCell.blueRange = 0.1
    emitterCell.greenRange = 0.0
    emitterCell.velocity = 10  //速度
    emitterCell.velocityRange = 350  //決定粒子的發(fā)射范圍
    emitterCell.emissionRange = CGFloat(M_PI_2)
    emitterCell.emissionLongitude = CGFloat(-M_PI)
    emitterCell.yAcceleration = 70
    emitterCell.xAcceleration = 0
    emitterCell.scale = 0.33
    emitterCell.scaleRange = 1.25
    emitterCell.scaleSpeed = -0.25
    emitterCell.alphaRange = 0.5
    emitterCell.alphaSpeed = -0.15
    
    emitter.emitterCells = [emitterCell]
  }
  
  required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }
  
  override class var layerClass: AnyClass {
    return CAEmitterLayer.self
  }
}

調(diào)用地方

 //add the snow effect layer
    snowView = SnowView(frame: CGRect(x: -150, y:-100, width: 300, height: 50))
    let snowClipView = UIView(frame: view.frame.offsetBy(dx: 0, dy: 50))
    snowClipView.clipsToBounds = true
    snowClipView.addSubview(snowView)
    view.addSubview(snowClipView)

如果想隱藏下雪功能
snowView.hidden = true

詳情了解iOSQuartzCore框架



知行辦公,專業(yè)移動(dòng)辦公平臺(tái)https://zx.naton.cn/
【總監(jiān)】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com
【運(yùn)營】運(yùn)維艄公,897221533@qq.com;****
【產(chǎn)品設(shè)計(jì)】流浪貓,364994559@qq.com
【體驗(yàn)設(shè)計(jì)】兜兜,2435632247@qq.com;
【iOS】淘碼小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的頓悟,1217022114@qq.com
【java】首席工程師MR_W,feixue300@qq.com;
【測試】土鏡問道,847071279@qq.com;
【數(shù)據(jù)】fox009521,42151960@qq.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 做IOS也一段時(shí)間,總覺得缺了一點(diǎn)必備技能。不能熟練的使用各種動(dòng)畫來使UI更有動(dòng)感。所以近期特意下載了一份電子版的...
    淘碼小工閱讀 414評(píng)論 0 0
  • 移動(dòng)辦公平臺(tái)查看附件時(shí)支持橫豎屏。而我們的app為了布局問題,沒有支持橫屏。我們就用下面的方法來使一個(gè)頁面支持橫豎...
    淘碼小工閱讀 1,990評(píng)論 0 4
  • 恍恍惚惚中,從2007年入行開始,做開發(fā)工作已經(jīng)十年了。開始做開發(fā)工作的目的很簡單,就是感覺坐在電腦前面不用跑來跑...
    _喜樂多_閱讀 453評(píng)論 0 0
  • 2月25日 星期六 小雨 此時(shí)的我已經(jīng)睡了一覺,跑了一天累的貼著面膜睡著被晨叫醒。 今天是周六,對(duì)于...
    彭林英閱讀 469評(píng)論 0 0
  • 現(xiàn)實(shí)與過去, 回憶是詩嗎? 應(yīng)該是吧?! 總在回憶些什么,卻抓不住, 今時(shí)的自己。 歡聲笑語中失落的心, 沒有方向...
    樓外聽風(fēng)閱讀 209評(píng)論 0 0

友情鏈接更多精彩內(nèi)容