一个简单的解决方案,用于向用户展示彩屑效果。平滑启动和停止。允许一次设置多个不同的粒子。您可以更改形状并在不同样式之间切换。可以更改发射器的大小和位置。可直接使用弧形、星形、心形、三角形等形状。您也可以使用自己的图片设置自定义形状。
可在 iOS 11+ 和 tvOS 11+ 上使用。
Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并已集成到 swift
编译器中。它与 Swift 构建系统集成,可以自动执行下载、编译和链接依赖项的过程。
设置好 Swift 包后,将其添加为依赖项就像将其添加到 Package.swift
的 dependencies
值中一样简单。
dependencies: [
.package(url: "https://github.com/ivanvorobei/SPConfetti", .upToNextMajor(from: "1.4.0"))
]
CocoaPods 是一个依赖项管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 进行集成,请在您的 Podfile
中指定它
pod 'SPConfetti'
如果您不想使用任何依赖项管理器,您可以手动集成。将 Sources/SPConfetti
文件夹放入您的 Xcode 项目中。确保启用“如果需要则复制项目
”和“创建组
”。
要轻松启动彩屑动画,请调用以下代码
// For start animation
SPConfetti.startAnimating(.centerWidthToDown, particles: [.triangle, .arc])
// For stop animation
SPConfetti.stopAnimating()
如果您想在一段时间后自动停止动画,请使用以下代码
SPConfetti.startAnimating(.centerWidthToDown, particles: [.triangle, .arc], duration: 3)
如果需要,您可以使用自定义布局来管理视图 SPConfettiView
。
要更改发射器的大小和方向,请使用 animation
属性。可用的动画如下
enum SPConfettiAnimation {
case fullWidthToDown
case fullWidthToUp
case centerWidthToDown
case centerWidthToUp
}
// To change animation:
confettiView.animation = .centerWidthToDown
您可以自定义粒子样式和动画配置。
// Available `.arc`, `.star`, `.heart`, `.circle`, `.triangle` and `.polygon`.
// You can set many styles particles.
confettiView.particles = [.star]
要设置自定义图像,请使用 .custom
情况
confettiView.particles = [.custom(yourImage)]
您可以使用配置对象设置全局值。默认情况下,它将应用于彩屑视图的所有后续配置。
SPConfettiConfiguration.particles = [.star]
SPConfettiConfiguration.particlesConfig.colors = [.systemRed, .sytemBlue]
要获取有关事件的通知,请为视图设置代理并实现协议 SPConfettiDelegate
confettiView.delegate = self
请查看协议
protocol SPConfettiDelegate: AnyObject {
// Caling when animation start.
func confettiDidStartAnimating()
// Caling when animation stop.
func confettiDidStopAnimating()
// Caling when animation end.
// May calling after `confettiDidStopAnimating`,
// becouse after stop emitting particles existing particles
// still available.
func confettiDidEndAnimating()
}
如果您正在使用 SwiftUI,建议您使用我们提供的修饰符。这将确保彩屑效果在相应的窗口场景中呈现。
struct FancyButton: View {
@State private var isPresenting = false
var body: some View {
Button("🎉 hooray!", action: { isPresenting.toggle() })
.confetti(isPresented: $isPresenting,
animation: .fullWidthToDown,
particles: [.triangle, .arc],
duration: 3.0)
}
}
彩屑修饰符可以附加到任何视图层次结构。它总是会产生全屏效果。
上面的全局配置也适用于 SwiftUI。 但是,您可以使用 .confettiParticle(_:_:)
修饰符为每个彩屑单独设置不同的配置。
VStack {
Button("Fast", action: { isPresenting1.toggle() })
.confetti(isPresented: $isPresenting1,
animation: .fullWidthToDown,
particles: [.triangle, .arc],
duration: 3.0)
.confettiParticle(\.velocity, 600)
Button("Slow", action: { isPresenting2.toggle() })
.confetti(isPresented: $isPresenting2,
animation: .fullWidthToDown,
particles: [.triangle, .arc],
duration: 3.0)
.confettiParticle(\.velocity, 100)
}
我运营着一个 Telegram 频道,我在那里发布新闻和教程。
您可以在 聊天 中获得问题的帮助。
我在 YouTube 上发布视频教程。