在“我的应用程序”的设置中,有一个开关允许用户打开或关闭iPhone的flash(flash用于在应用程序运行时指示应用程序逻辑中的某些点)。我要实现的是:当用户打开这个开关时,我希望它闪烁一瞬间,以指示其“打开”状态。
现在,我知道如何设置torchMode
开或关-这是在应用程序本身实现的,但我不确定如何正确地使其“闪烁”以进行设置。我想到的方法之一是使用以下代码(toggleFlash()
是一种在主代码中实现的切换torchMode
的静态方法):
UIView.animate(withDuration: 1.0, animations: {
ViewController.toggleFlash(on: true)
}, completion: { (_) in
ViewController.toggleFlash(on: false)
})
这确实会让它“眨眼”,但只是一瞬间,而不是一秒钟。此外,我也不确定使用
animate
来实现这个目的是否正确。另一个想法是使用Thread.sleep
,但这看起来更糟糕。有人能推荐更好的解决方案吗?
最佳答案
你可以用定时器。
func flashForOneSecond() {
ViewController.toggleFlash(on: true)
flashOffTimer = Timer.scheduledTimer(timeInterval:1, target:self, selector:#selector(self.switchFlashOff), userInfo:nil, repeats:false)
}
@objc func switchFlashOff() {
ViewController.toggleFlash(on: false)
}