当使用定时器功能设置标题时,按钮文本闪烁,Swift

当使用定时器功能设置标题时,按钮文本闪烁,Swift

问题描述:

我正在按照stackoverflow中显示的答案执行倒计时器。当文本设置为标签时,计时器文本不会闪烁(完美工作)。当使用定时器功能设置标题时,按钮文本闪烁,Swift

当为按钮设置相同的文本时,每次设置标题时都会闪烁。如何避免按钮文字闪烁?

@IBOutlet weak var countDownTimer: UILabel! 
@IBOutlet weak var countDownTimerButton: UIButton! 
var count = 120 

override func viewDidLoad() { 
    super.viewDidLoad() 

    var _ = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(update), userInfo: nil, repeats: true) 
    // Do any additional setup after loading the view. 
} 


func update() { 

    if(count > 0){ 
     let minutes = String(count/60) 
     let seconds = String(count % 60) 
     countDownTimer.text = minutes + ":" + seconds // Setting text for label (Works perfectly) 

     let text = minutes + ":" + seconds 
     countDownTimerButton.setTitle(text, for: .normal) // Setting text for button, (Text flashes everytime it is set) 
     count -= 1 
    } 

} 

这是通过按钮标题文本的设置引起的。只是按钮的类型设置为自定义和闪烁应该停止

+0

它的工作原理,但不明白它背后的原因。如何将按钮类型设置为自定义可以解决问题? –

+0

它的工作原理。我的按钮在UItableview中,每当我滚动它,按钮标题将根据位置改变。而令人讨厌的部分是在改变标题时闪烁。当我设置自定义类型时,我困惑它停止闪烁。即使我不知道它背后的逻辑。 – Vrangle

闪烁,因为它被击中每次你-1试试这个

@IBOutlet weak var countDownTimer: UILabel! 
@IBOutlet weak var countDownTimerButton: UIButton! 
var count = 120 

override func viewDidLoad() { 
    super.viewDidLoad() 

    var _ = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(update), userInfo: nil, repeats: true) 
    // Do any additional setup after loading the view. 
} 


func update() { 

    if(count > 0){ 
     let minutes = String(count/60) 
     let seconds = String(count % 60) 
     countDownTimer.text = minutes + ":" + seconds // Setting text for label (Works perfectly) 

     let text = minutes + ":" + seconds 

     count -= 1 
    } 
countDownTimerButton.setTitle(text, for: .normal) // Setting text for button, (Text flashes everytime it is set) 

}