swift2 点击按钮时,将同一按钮图像更改为另一个图像,然后淡入到原始图像

mrwjdhj3  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(114)

我有一个简单的问题。我想点击一个按钮,一旦点击按钮快速褪色到同一图像的白色版本,然后溶解回原来的彩色图像超过5秒。而这是发生我想按钮被禁用,以防止过点击。我知道如何禁用按钮。我只是不知道如何做其余的。
我不知道从哪里开始提供我的代码。

j91ykkif

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
}
jq6vz3qz

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
}

}

相关问题