Ios 如何在完成动画制作之前禁用按钮

Ios 如何在完成动画制作之前禁用按钮,ios,swift,animation,uiimage,Ios,Swift,Animation,Uiimage,我正在使用下面的代码。如何在完成动画效果之前禁用按钮?在这种情况下,当我在完成动画之前单击按钮时,动画图像会重新启动,并且不是很平滑 @IBAction func btn_LeeStatue(sender: AnyObject) { lee_statue_img.animationImages = [ UIImage(named: "lee_statueAni0001.png")!, UIImage(named: "lee_statueAni000

我正在使用下面的代码。如何在完成动画效果之前禁用按钮?在这种情况下,当我在完成动画之前单击按钮时,动画图像会重新启动,并且不是很平滑

@IBAction func btn_LeeStatue(sender: AnyObject) {    
    lee_statue_img.animationImages = [
        UIImage(named: "lee_statueAni0001.png")!,
        UIImage(named: "lee_statueAni0002.png")!,
        UIImage(named: "lee_statueAni0003.png")!,
        UIImage(named: "lee_statueAni0004.png")!,
        UIImage(named: "lee_statueAni0005.png")!,
    ] 

    lee_statue_img.animationDuration = 3
    lee_statue_img.animationRepeatCount = 1
    lee_statue_img.startAnimating()     
}

UIImageView图像动画没有“完成处理程序”。这比那要简单得多

如果您想要一个完成处理程序,请使用某种具有完成处理程序的动画

(在你的情况下,我不明白你为什么需要一个完成处理程序。你知道这个动画什么时候结束:从现在起X秒。所以只要设置一个NSTimer,然后再给你回电话。) 因此,您的代码将是:

func showButton(timer : NSTimer) {
   YourButtonOutlet.enabled = true
   //this will enable you button again
}

@IBAction func btn_LeeStatue(sender: AnyObject) {    
lee_statue_img.animationImages = [
    UIImage(named: "lee_statueAni0001.png")!,
    UIImage(named: "lee_statueAni0002.png")!,
    UIImage(named: "lee_statueAni0003.png")!,
    UIImage(named: "lee_statueAni0004.png")!,
    UIImage(named: "lee_statueAni0005.png")!,
] 

//Disable the button
YourButtonOutlet.enabled= false
lee_statue_img.animationDuration = 3
lee_statue_img.animationRepeatCount = 1
lee_statue_img.startAnimating()
//set the timer for X seconds (4s in this example)  
let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("showButton:"), userInfo: nil, repeats: false)
}
您也可以在, 只需添加此功能->

func delay(delay:Double, closure:()->()) {
    dispatch_after(
        dispatch_time(
            DISPATCH_TIME_NOW,
            Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
} 
您可以这样称呼它->(0.75是应用程序在执行闭包中的内容之前应该等待的时间)


PS:在动画开始之前,您必须设置
yourbutnoutlet.enabled=false

我想您想禁用用户触摸按钮的动画,然后将其启用到用户触摸。为此,请切换userInteractionEnabled属性

let button: UIButton = UIButton()
button.userInteractionEnabled = false
button.animateMethod()
button.userInteractionEnabled = true

我不理解那个代码-对不起。。我想禁用按钮在动画我插入代码不工作-0如何创建按钮?
@IBAction func btn_leestation(发件人:AnyObject)
我在Main.stroryboard中创建了按钮,并用control键将按钮图像拖到ViewController.swift上谢谢阿比达先生的评论,但我需要更简单的代码。。没有比这更简单的代码了吗?我不想使用NSTimer..;->相信我,使用NSTimer是最简单的方法,如果你想在今天这个时代使用完成处理程序(当动画完成时得到通知,你必须使用另一种动画),我会选择
dispatch\u after()
而不是
NSTimer
。。。(我的意见)谢谢,我用你的建议更新了我的答案,是的,使用dispatch_after()而不是NSTimer更优雅、更有用
let button: UIButton = UIButton()
button.userInteractionEnabled = false
button.animateMethod()
button.userInteractionEnabled = true