CALayer-CAEmitterLayer(粒子圖層)

  • CAEmitterLayer能夠顯示粒子效果通過Core Animation,而粒子是通過CAEmitterCell來創(chuàng)建的,這些粒子被繪制在圖層的背景上方 *

指定的粒子屬性

  • emitterCells
    var emitterCells: [CAEmitterCell]?
    所有在數(shù)組中的粒子都會被隨機的繪制在圖層上

粒子幾何屬性

** renderModel **
** var renderMode: String **
控制粒子的渲染模式,(比如是否粒子重疊加重色彩)默認值是kCAEmitterLayerUnordered.

  • let kCAEmitterLayerUnordered: String 無序隨機的
  • let kCAEmitterLayerOldestFirst: String 最新的在上層出現(xiàn)
  • let kCAEmitterLayerOldestLast: String 最新的在下層出現(xiàn)
  • let kCAEmitterLayerBackToFront: String 由下層向上層涌動
  • let kCAEmitterLayerAdditive: String 疊加顯示

** emitterPosition **
var emitterPosition: CGPoint
在粒子圖層上粒子的發(fā)射點(支持隱式動畫)

** emitterShape **
var emitterShape: String
粒子發(fā)射點圖形形狀

  • let kCAEmitterLayerPoint: String
  • let kCAEmitterLayerLine: String 線形
  • let kCAEmitterLayerRectangle: String 矩形
  • let kCAEmitterLayerCuboid: String 長方體
  • let kCAEmitterLayerCircle: String 圓形
  • let kCAEmitterLayerSphere: String 球體

** emitterZPosition **
** var emitterZPosition: CGFloat **
粒子發(fā)射器的z軸中心,這個需要結(jié)合emitterSizeemitterDepth來使用,主要是用來設(shè)置emitterShape的.默認值是0

** emitterDepth **
var emitterDepth: CGFloat
粒子發(fā)射器的深度,也就是y軸的高emitterZPosition就是這個Z軸的中心

** emitterSize **
** var emitterSize: CGSize **
這個就是粒子發(fā)射器的shape的大小,控制emitterShape的大小

** emitterMode **
** var emitterModel: String **
粒子發(fā)射器的模式

  • let kCAEmitterLayerPoints: String
  • let kCAEmitterLayerOutline: String
  • let kCAEmitterLayerSurface: String
  • let kCAEmitterLayerVolume: String

CAEmitterCell的基礎(chǔ)屬性

** scale **
** var scale: Float **
設(shè)置粒子發(fā)射器的生成粒子的初始縮放比例

** speed **
** var speed: UInt32 **
粒子發(fā)射器的粒子發(fā)射速度

** spin **
** var spin: CGFloat **
設(shè)置粒子的自旋速度,數(shù)值越大旋轉(zhuǎn)越快

** velocity **
** var velocity: Float **
設(shè)置粒子的移動速度(支持隱式動畫)默認值是1.0

** birthRate **
** var birthRate: Float **
每秒生成的粒子數(shù)量,默認值是1(支持隱式動畫)

** lifetime **
** var lifetime: Float **
設(shè)置粒子的生存時間(支持隱式動畫)默認是1.0

其實用起來比較簡單,所以先看一個例子,用起來好晃眼~~~

EmitterLayer.gif
//
//  ViewController.swift
//  CAEmitterLayer
//
//  Copyright ? 2016 BZ. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    var emitterLayer:CAEmitterLayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        setupUI()
    }

    func setupUI() {
        emitterLayer                 = CAEmitterLayer()
        self.view.layer.addSublayer(emitterLayer)
        emitterLayer.backgroundColor = UIColor.blackColor().CGColor
        let screenWidth              = self.view.bounds.size.width
        emitterLayer.frame           = CGRectMake(0, 0, screenWidth, screenWidth)
        emitterLayer.position        = self.view.center
        emitterLayer.emitterPosition = CGPointMake(emitterLayer.bounds.size.width/2, emitterLayer.bounds.size.height/2)
        emitterLayer.renderMode      = kCAEmitterLayerUnordered;
        emitterLayer.emitterShape    = kCAEmitterLayerPoint; 發(fā)射器形狀
        emitterLayer.emitterSize     = CGSizeMake(200, 200); // 發(fā)射器大小

        let emitterCell              = CAEmitterCell()
        emitterCell.scale = 0.2
        emitterCell.contents         = UIImage(named: "123")?.CGImage
        emitterCell.birthRate        = 100       //出生率
        emitterCell.lifetime         = 5            //生存時間
        emitterCell.velocity         = 50          //發(fā)射速度
        emitterCell.velocityRange    = 100    //發(fā)射的范圍
        emitterCell.alphaSpeed       = -0.4  //透明度遞增速度
        emitterCell.emissionRange    = CGFloat(M_PI*2.0) 發(fā)射角度
        emitterLayer.emitterCells    = [emitterCell]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
EmitterLayer.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市课舍,隨后出現(xiàn)的幾起案子揖膜,更是在濱河造成了極大的恐慌息楔,老刑警劉巖碍现,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庄撮,死亡現(xiàn)場離奇詭異盒粮,居然都是意外死亡逆日,警方通過查閱死者的電腦和手機嵌巷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來室抽,“玉大人搪哪,你說我怎么就攤上這事∑夯” “怎么了晓折?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兽泄。 經(jīng)常有香客問我漓概,道長,這世上最難降的妖魔是什么病梢? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任胃珍,我火速辦了婚禮,結(jié)果婚禮上蜓陌,老公的妹妹穿的比我還像新娘觅彰。我一直安慰自己,他們只是感情好钮热,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布填抬。 她就那樣靜靜地躺著,像睡著了一般隧期。 火紅的嫁衣襯著肌膚如雪飒责。 梳的紋絲不亂的頭發(fā)上赘娄,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音宏蛉,去河邊找鬼遣臼。 笑死,一個胖子當著我的面吹牛檐晕,可吹牛的內(nèi)容都是我干的暑诸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辟灰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篡石?” 一聲冷哼從身側(cè)響起芥喇,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凰萨,沒想到半個月后继控,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡胖眷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年武通,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珊搀。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冶忱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出境析,到底是詐尸還是另有隱情囚枪,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布劳淆,位于F島的核電站链沼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏沛鸵。R本人自食惡果不足惜括勺,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曲掰。 院中可真熱鬧疾捍,春花似錦、人聲如沸蜈缤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽底哥。三九已至咙鞍,卻和暖如春房官,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背续滋。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工翰守, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疲酌。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓蜡峰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親朗恳。 傳聞我的和親對象是個殘疾皇子湿颅,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容