【问题标题】:How do I start and stop Confetti View on a single UIbutton?如何在单个 UI 按钮上启动和停止 Confetti View?
【发布时间】:2019-12-22 17:06:05
【问题描述】:

我是 Xcode 的初学者。我正在尝试制作一个在单击按钮时显示五彩纸屑的应用程序。但是,当我按下按钮时,会显示五彩纸屑,但它永远不会停止。它阻止按钮和视图。我正在使用 Cocoapod - SAConfettiView。

这段代码在 Xcode 10 上。我相信 Confetti 挡住了主视图。我使用 playConfetti 作为 IBaction 函数。

@IBAction func playConfetti(_ sender: UIButton, forEvent event: SAConfettiView) {
    let confettiView = SAConfettiView(frame: self.view.bounds)
    confettiView.intensity = 1
    confettiView.type = .Star
    confettiView.startConfetti()
    view.addSubview(confettiView)
}

我必须使用 If-Else 语句吗? 谢谢!

【问题讨论】:

    标签: ios swift cocoapods xcode10


    【解决方案1】:

    更新答案

    要停止SAConfettiView调用函数,

    confettiView.stopConfetti()
    

    将您的按钮操作代码更改为以下内容:

    let confettiView = SAConfettiView()
    
    @IBAction func startClicked(_ sender: Any)
        if confettiView.isActive() {
            confettiView.stopConfetti() 
            confettiView.removeFromSuperview() 
        }
        else{
            confettiView = SAConfettiView(frame: self.view.bounds)
            confettiView.intensity = 1
            confettiView.type = .Star
            confettiView.startConfetti()
            view.addSubview(confettiView)
            self.view.bringSubviewToFront(sender as! UIButton)
        }
    }
    

    【讨论】:

    • 还有三件事:1) 不需要转换sender,它已经是UIButton,它是UIView 的子类。 2) 你不能在你的let 语句中访问self,因为self 在类被初始化之前不可用。相反,在函数内部设置 confettiView 的框架。 3) 停止后添加confettiView.removeFromSuperview()
    • 我尝试按照您的建议更新我的代码,但执行没有区别:(
    • 我在 if 语句中添加了“self.view.sendSubviewToBack(confettiView)”,但没有任何变化。有什么办法可以增加五彩纸屑的持续时间吗??
    • 在您的代码中,您的按钮在单击按钮后是否可见?
    • @VinuJacob 它是可见的,但它被阻止了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2012-12-06
    • 2013-02-28
    相关资源
    最近更新 更多