按下按钮时如何使标签消失?

时间:2015-07-07 09:51:07

标签: swift cocoa-touch uilabel

我目前正在开发一个非常基本的测验应用程序。

用户可以选择4种选择。

如果按下正确的按钮,隐藏的标签(LabelEnd)将显示“正确”,并自动转到下一个随机问题。

如果他们按错了按钮,隐藏的标签将显示为“错误”并保持相同的问题。

我的问题是:如何在1秒后再次隐藏标签,无论它是正确还是错误?

func Hide() {
    LabelEnd.hidden = true
}

func UnHide(){
    LabelEnd.hidden = false
}

@IBAction func Button1Action(sender: AnyObject) {
    UnHide()
    if(CorrectAnswer == "1"){
        LabelEnd.text = "Correct!"
        RandomQuestions()
    } else {
        LabelEnd.text = "Wrong"
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用UIView animate方法,其持续时间可以设置间隔时间。

像这样:

UIView.animateWithDuration(0.1, animations: { () -> Void in
     LabelEnd.hidden = false
})

答案 1 :(得分:0)

您可以在1秒后隐藏标签:

var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
    self.LabelEnd.hidden = true
})

您可以根据需要更改时间。

你可以这样使用它:

func Hide() {
    var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
    dispatch_after(dispatchTime, dispatch_get_main_queue(), {
        self.LabelEnd.hidden = true
    })
}

@IBAction func Button1Action(sender: AnyObject) {
    UnHide()
    if(CorrectAnswer == "1"){
        LabelEnd.text = "Correct!"
        Hide()

    }
    else{
        LabelEnd.text = "Wrong"
        Hide()
    }
}

另一种方法是,您可以使用timer,如下面的代码所示:

var timer = NSTimer()

func Hide() {
    LabelEnd.hidden = true
    timer.invalidate()  //You can remove timer here.
}

func UnHide(){
    LabelEnd.hidden = false
}

@IBAction func Button1Action(sender: AnyObject) {
    UnHide()
    if(CorrectAnswer == "1"){
        LabelEnd.text = "Correct!"
        timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("Hide"), userInfo: nil, repeats: false)


    }
    else{
        LabelEnd.text = "Wrong"
        timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("Hide"), userInfo: nil, repeats: false)

    }
}