CAEmitterLayer
能夠顯示粒子效果通過Core Animation,而粒子是通過CAEmitterCell
來建立的,這些粒子被繪製在圖層的背景上方 *
指定的粒子屬性
- emitterCells
var emitterCells: [CAEmitterCell]?
所有在陣列中的粒子都會被隨機的繪製在圖層上
粒子幾何屬性
** renderModel **
** var renderMode: String
**
控制粒子的渲染模式,(比如是否粒子重疊加重色彩)預設值是kCAEmitterLayerUnordered
.
let kCAEmitterLayerUnordered: String
無序隨機的let kCAEmitterLayerOldestFirst: String
最新的在上層出現let kCAEmitterLayerOldestLast: String
最新的在下層出現let kCAEmitterLayerBackToFront: String
由下層向上層湧動let kCAEmitterLayerAdditive: String
疊加顯示
** emitterPosition **
var emitterPosition: CGPoint
在粒子圖層上粒子的發射點(支援隱式動畫)
** emitterShape **
var emitterShape: String
粒子發射點圖形形狀
let kCAEmitterLayerPoint: String
點let kCAEmitterLayerLine: String
線形let kCAEmitterLayerRectangle: String
矩形let kCAEmitterLayerCuboid: String
長方體let kCAEmitterLayerCircle: String
圓形let kCAEmitterLayerSphere: String
球體
** emitterZPosition **
** var emitterZPosition: CGFloat
**
粒子發射器的z軸中心,這個需要結合emitterSize
和emitterDepth
來使用,主要是用來設定emitterShape
的.預設值是0
** emitterDepth **
var emitterDepth: CGFloat
粒子發射器的深度,也就是y軸的高emitterZPosition
就是這個Z軸的中心
** emitterSize **
** var emitterSize: CGSize
**
這個就是粒子發射器的shape的大小,控制emitterShape
的大小
** emitterMode **
** var emitterModel: String
**
粒子發射器的模式
let kCAEmitterLayerPoints: String
let kCAEmitterLayerOutline: String
let kCAEmitterLayerSurface: String
let kCAEmitterLayerVolume: String
CAEmitterCell的基礎屬性
** scale **
** var scale: Float
**
設定粒子發射器的生成粒子的初始縮放比例
** speed **
** var speed: UInt32
**
粒子發射器的粒子發射速度
** spin **
** var spin: CGFloat
**
設定粒子的自旋速度,數值越大旋轉越快
** velocity **
** var velocity: Float
**
設定粒子的移動速度(支援隱式動畫)預設值是1.0
** birthRate **
** var birthRate: Float
**
每秒生成的粒子數量,預設值是1(支援隱式動畫)
** lifetime **
** var lifetime: Float
**
設定粒子的生存時間(支援隱式動畫)預設是1.0
其實用起來比較簡單,所以先看一個例子,用起來好晃眼~~~
//
// 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; 發射器形狀
emitterLayer.emitterSize = CGSizeMake(200, 200); // 發射器大小
let emitterCell = CAEmitterCell()
emitterCell.scale = 0.2
emitterCell.contents = UIImage(named: "123")?.CGImage
emitterCell.birthRate = 100 //出生率
emitterCell.lifetime = 5 //生存時間
emitterCell.velocity = 50 //發射速度
emitterCell.velocityRange = 100 //發射的範圍
emitterCell.alphaSpeed = -0.4 //透明度遞增速度
emitterCell.emissionRange = CGFloat(M_PI*2.0) 發射角度
emitterLayer.emitterCells = [emitterCell]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
複製程式碼