自定义 confetti 动画。
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 needed
和 Create groups
。
首先,在每个您想使用 ConfettiSwiftUI
的 swift
文件中添加 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)
.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 🌟
。
ConfettiSwiftUI
在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。
以下项目已在其应用程序中集成了 ConfettiSwiftUI。