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

Posted

技术标签:

【中文标题】使用计时器功能设置标题时,按钮文本闪烁,Swift【英文标题】:Button text flashes when title is set using a timer function, Swift 【发布时间】:2017-08-19 17:55:22 【问题描述】:

我正在按照*** 中显示的答案来实现倒数计时器。为标签设置文本时,计时器文本不会闪烁(完美运行)。

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

@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
    


【问题讨论】:

【参考方案1】:

这是通过按钮标题文本的设置引起的。只需将按钮的类型设置为自定义,闪烁就会停止

【讨论】:

它有效,但不明白背后的原因。将按钮类型设置为自定义如何解决问题? 它有效。我的按钮在 UItableview 中,每当我滚动它时,按钮标题都会根据位置而改变。烦人的部分是它在更改标题时闪烁。当我设置为自定义类型时,我感到困惑它停止闪烁。连我都不知道背后的逻辑。【参考方案2】:

闪烁,因为每次你-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)


【讨论】:

以上是关于使用计时器功能设置标题时,按钮文本闪烁,Swift的主要内容,如果未能解决你的问题,请参考以下文章

在swift中使用present时如何阻止ViewController闪烁

iOS 按钮倒计时功能

Tableview Swift 中的多个计时器

如何为用户输入文本时将动态创建的每个单元格设置按钮操作(Swift 4)?

swift - 快速滚动时如何阻止tableview单元格出现故障和闪烁的图像?

使用计时器显示和隐藏文本框