【问题标题】:Make button disappear from 3 seconds then reappear (swift3)使按钮从 3 秒消失然后重新出现(swift3)
【发布时间】:2017-08-24 16:33:45
【问题描述】:

每次我点击按钮时,我都希望按钮隐藏 3 秒,然后在 3 秒结束后,我希望按钮不被隐藏。

@IBOutlet var save: UIButton!
@IBAction func button(_ sender: Any) {

}

【问题讨论】:

  • 那么问题出在哪里?你有什么问题?
  • @Sam Burns Google Timer in swift。

标签: ios button swift3 timer hidden


【解决方案1】:

您可以安排一个在主线程上执行的闭包,延迟 3 秒以取消隐藏您的按钮。

@IBOutlet var save: UIButton!
@IBAction func button(_ sender: Any) {
    save.isHidden = true
    DispatchQueue.main.asyncAfter(deadline: .now()+3, execute: {
        save.isHidden = false
    })
}

【讨论】:

    【解决方案2】:

    您可以使用 CGD:

    @IBOutlet var save: UIButton!
    @IBAction func button(_ sender: Any) {
        self.button.alpha = 0.0
        DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
            self.button.alpha = 1.0
        }
    }
    

    或者你可以使用perform(_:with:afterDelay:)

    @IBOutlet var save: UIButton!
    @IBAction func button(_ sender: Any) {
        self.button.alpha = 0.0
        perform(#selector(showButton), with: nil, afterDelay: 3)
    }
    
    @objc func showButton() {
        self.button.alpha = 1.0
    }
    

    【讨论】:

    • 避免使用perform(_:with:afterDelay)。与DispatchQueue asyncAfter相比,它非常有限。
    【解决方案3】:

    其实如果你使用谷歌,你会发现很多例子。使用这样的东西:

    var timer: Timer!
    @IBOutlet var save: UIButton!
    @IBAction func button(_ sender: Any) {
        save.isHidden = true
        timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(runTimedCode), userInfo: nil, repeats: false)
    }
    
    func runTimedCode() {
        save.isHidden = false
    }
    

    【讨论】:

    • 为什么要立即让定时器失效?
    • 嗯。你的意思是 ivalidate 会在它完成之前禁用计时器?
    • 当然。这就是invalidate 的用途。你在哪里隐藏按钮?
    • 根本不需要使定时器失效。它是不重复的。一旦调用了选择器,就没有什么可以使之无效了。
    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多