我有一个简单的问题。我想点击一个按钮,一旦点击按钮快速褪色到同一图像的白色版本,然后溶解回原来的彩色图像超过5秒。而这是发生我想按钮被禁用,以防止过点击。我知道如何禁用按钮。我只是不知道如何做其余的。我不知道从哪里开始提供我的代码。
j91ykkif1#
要从一个图像设置动画到另一个图像,可以使用以下命令:
let animationDuration = 5.0 button.imageView?.animationImages = [UIImage(named: "image1.png")!, UIImage(named: "image2.png")!] button.imageView?.animationDuration = animationDuration button.isUserInteractionEnabled = false button.imageView?.startAnimating()
要在此时间后重新启用按钮,您可以使用以下命令:
DispatchQueue.main.asyncAfter(deadline: .now() + animationDuration) { button.isUserInteractionEnabled = true }
jq6vz3qz2#
可能不是最有效的,但它对我很有效
@IBOutlet weak var logoIndicator: UIButton! override func viewDidLoad() { super.viewDidLoad() } @IBAction func logoEraseAll(sender: AnyObject) { onTapped() } func onTapped(){ let afterTapped = UIImage(named: "grey.png") as UIImage! self.logoIndicator.setImage(afterTapped, forState: .Normal) logoIndicator.enabled = false delay(2) { self.transitionBack() } } func delay(delay:Double, closure:()->()) { dispatch_after( dispatch_time( DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), closure) } func transitionBack(){ UIView.transitionWithView(logoIndicator, duration: 2, options: .TransitionCrossDissolve, animations: { self.logoIndicator.setImage(UIImage(named: "color.png"), forState: .Normal) }, completion: nil) logoIndicator.enabled = true } }
2条答案
按热度按时间j91ykkif1#
要从一个图像设置动画到另一个图像,可以使用以下命令:
要在此时间后重新启用按钮,您可以使用以下命令:
jq6vz3qz2#
可能不是最有效的,但它对我很有效