gpt4 book ai didi

ios - 如何防止调用 UIView.animate

转载 作者:行者123 更新时间:2023-11-28 14:09:04 25 4
gpt4 key购买 nike

我想在正在进行的通话 View 中重现 WhatsApp 按钮的行为:它们在出现几秒钟后消失,每次用户点击屏幕时,它们都会再次出现。

假设我有这两个按钮,

@IBOutlet weak var callButton: UIButton!
@IBOutlet weak var muteButton: UIButton!

这是在输入 viewDidAppear 以及用户点击屏幕时调用的代码段:

self.callButton.alpha = 1.0
self.muteButton.alpha = 1.0
delay(4.0) {
UIView.animate(withDuration: 1.0, animations: {
self.callButton.alpha = 0.0
self.muteButton.alpha = 0.0
}, completion: { _ in })
}

func delay(_ seconds: Double, completion: @escaping () -> ()) {
let popTime = DispatchTime.now() + Double(Int64(Double(NSEC_PER_SEC) * seconds)) / Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: popTime) {
completion()
}
}

使用此代码,如果用户在上次调用后 3 秒点击屏幕,按钮仍会在 1 秒后消失。所以我想知道如果同时再次点击 View ,我如何阻止之前的 UIView.animate

谢谢你的帮助

最佳答案

首先,当 Apple 在 UIView.animate 中为您提供延迟方法时,您为什么要创建延迟方法?

现在,要实现您想要的效果,只需使用一个标志来检查该方法是否已被调用一次并阻止该方法调用。

var animating = false

func yourAnimateMethod() {
if !animating {
animating = true
UIView.animate(withDuration: 1, delay: 4, options: .curveLinear, animations: {
self.callButton.alpha = 0.0
self.muteButton.alpha = 0.0
}) { (completed) in
if completed {
animating = false
}
}
}
}

关于ios - 如何防止调用 UIView.animate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52717315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com