swiftUI 煙花效果、粒子效果

煙花效果

IMB_phW7hZ.GIF
//
//  Fireworks.swift


import SwiftUI
// MARK: - 煙花
struct FireworksView: UIViewRepresentable {
    func updateUIView(_ uiView: UIView, context: Context) {
        
    }
    
    func makeUIView(context: Context) -> UIView {
        //大小充滿整個(gè)屏幕
        let view = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
           //背景透明
        view.backgroundColor = .clear
          
            
            //粒子層
            let emitterLayer = CAEmitterLayer()
            emitterLayer.emitterSize = view.bounds.size
            emitterLayer.emitterShape = .rectangle
            emitterLayer.position = CGPoint(x: view.bounds.midX, y: view.bounds.midY)
            emitterLayer.renderMode = .additive
            
            // 煙花種子
            let seedCell = CAEmitterCell()
            seedCell.color = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.2).cgColor
            seedCell.redRange = 0.8
            seedCell.greenRange = 0.8
            seedCell.blueRange = 0.8
            seedCell.lifetime = 1
            seedCell.birthRate = 4
            
            // 煙花
            let fireworkCell = CAEmitterCell()
            fireworkCell.contents = UIImage(named: "star")?.cgImage
            fireworkCell.alphaRange = 0.1
            fireworkCell.lifetime = 100
            fireworkCell.lifetimeRange = 10
            fireworkCell.birthRate = 10_000
            fireworkCell.velocity = 200
            fireworkCell.scale = 0.2
            fireworkCell.spin = 3
            fireworkCell.alphaSpeed = -0.2
            fireworkCell.scaleSpeed = -0.1
            fireworkCell.duration = 0.1
            fireworkCell.emissionRange = CGFloat.pi * 2
            fireworkCell.yAcceleration = 80
            
            seedCell.emitterCells = [fireworkCell]
            emitterLayer.emitterCells = [seedCell]
            view.layer.insertSublayer(emitterLayer, at: 0)
        return view
        
    }
}

使用方法

//
import SwiftUI

struct ContentView: View {
    var body: some View {
    //使用
        ZStack {
            //背景顏色置黑,模擬夜空
            Color.black.ignoresSafeArea()
            FireworksView()
                .ignoresSafeArea()
            Text("煙花").font(.largeTitle).foregroundColor(.white)
        }
        
       
    }
}

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

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

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