ConfettiSwiftUI

GitHub License Cocoapods platforms

自定义 confetti 动画。

🌄 示例

💻 安装

Swift Package Manager

Swift Package Manager 是一个用于管理 Swift 代码分发的工具。它与 Swift 构建系统集成,以自动化下载、编译和链接依赖项的过程。

要使用 Xcode 12 将 ConfettiSwiftUI 集成到您的 Xcode 项目中,请在 File > Swift Packages > Add Package Dependency... 中指定它。

https://github.com/simibac/ConfettiSwiftUI.git, :branch="master"

手动

如果您不想使用任何依赖管理器,您可以手动将 ConfettiSwiftUI 集成到您的项目中。将 Sources/ConfettiSwiftUI 文件夹放入您的 Xcode 项目中。确保启用 Copy items if neededCreate groups

🧳 要求

🛠 用法

首先,在每个您想使用 ConfettiSwiftUIswift 文件中添加 import ConfettiSwiftUI。定义一个整数作为状态变量,它负责触发动画。对该变量的任何更改都将触发新的动画(递增和递减)。

import ConfettiSwiftUI
import SwiftUI

struct ContentView: View {
    
    @State private var trigger: Int = 0
    
    var body: some View {
        Button("🎉") {
            trigger += 1
        }
        .confettiCannon(trigger: $trigger)
    }
}

参数

参数 类型 描述 默认值
trigger Binding 此变量的任何更改都会触发动画 0
num Int confetti 的数量 20
confettis [ConfettiType] 形状和文本列表 [.shape(.circle), .shape(.triangle), .shape(.square), .shape(.slimRectangle), .shape(.roundedCross)]
colors [Color] 应用于默认形状的颜色列表 [.blue, .red, .green, .yellow, .pink, .purple, .orange]
confettiSize CGFloat confetti 和表情符号缩放到的尺寸 10.0
rainHeight CGFloat confetti 经过的垂直距离 600.0
fadesOut Bool confetti 和表情符号缩放到的尺寸 true
opacity Double 动画期间的最大不透明度 1.0
openingAngle Angle 定义开启角度(度)的边界 Angle.degrees(60)
closingAngle Angle 定义关闭角度(度)的边界 Angle.degrees(120)
radius CGFloat 爆炸半径 300.0
repetitions Int 爆炸重复次数 1
repetitionInterval Double 重复之间的持续时间 1.0
hapticFeedback Bool 每次 confetti 爆炸时的触觉反馈 true

带有实时预览的配置器应用程序

您可以使用 demo project here 中的配置器应用程序来配置您想要的动画,或从众多示例中获得灵感。

配置示例

颜色和尺寸

.confettiCannon(trigger: $trigger, colors: [.red, .black], confettiSize: 20)

重复

.confettiCannon(trigger: $trigger, repetitions: 3, repetitionInterval: 0.7)

烟花

.confettiCannon(trigger: $trigger, num: 50, openingAngle: Angle(degrees: 0), closingAngle: Angle(degrees: 360), radius: 200)

表情符号

.confettiCannon(trigger: $trigger, confettis: [.text("❤️"), .text("💙"), .text("💚"), .text("🧡")])

无限

.confettiCannon(trigger: $trigger, num:1, confettis: [.text("💩")], confettiSize: 20, repetitions: 100, repetitionInterval: 0.1)

天降 confetti

.confettiCannon(trigger: $trigger, num:1, confettis: [.text("💵"), .text("💶"), .text("💷"), .text("💴")], confettiSize: 30, repetitions: 50, repetitionInterval: 0.1)

.confettiCannon(trigger: $trigger8, confettis: [.image("arb"), .image("eth"), .image("btc"), .image("op"), .image("link"), .image("doge")], confettiSize: 20)

👨‍💻 贡献者

欢迎并感谢所有问题报告、功能请求、pull requests 和 GitHub stars。

🔨支持

如果您喜欢这个项目,请不要忘记 put star 🌟

Buy Me A Coffee

📃 许可证

ConfettiSwiftUI 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。

📦 项目

以下项目已在其应用程序中集成了 ConfettiSwiftUI。