2017-02-22 47 views
1

Я создал простой таймер в быстром 3.Swift этикетки таймера повторяющейся 9

По некоторым причинам, хотя, несмотря на то, что работает дисплей на этикетку слишком много номеров: S отображает сумасшедшее количество 9-х. Это связано с округлением?

Спасибо, код ниже :)


var swiftTimer : Timer? 
var swiftCounter: Double = 0.00 

@IBOutlet weak var displayTimeLBL: UILabel! 

@IBAction func start(_ sender: Any) { 
    swiftTimer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(ViewController.updateCounter), userInfo: nil, repeats: true) 

    } 

@IBAction func stop(_ sender: Any) { 
    if swiftTimer != nil{ 
     swiftTimer?.invalidate() 
     swiftCounter = 0.00 
     updateLabel() 
     swiftTimer = nil 
    } 
} 

func updateLabel(){ 
    displayTimeLBL.text = String(swiftCounter) 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

func updateCounter(){ 
    swiftCounter+=0.01 
    round(swiftCounter) 
    updateLabel() 
} 

enter image description here

+1

Зачем вам нужен таймер повторить 100 раз в секунду? Вам не нужно отображать каждую часть секунды пользователю –

+2

Не используйте таймер для измерения времени. Просто сохраните дату начала и получите timeInterval с этого момента –

+0

Что заставило вас хотеть округлить? Вы хотите, чтобы таймер увеличивался на несколько секунд? Миллисекунды? –

ответ

1

Простейшее решение:

func updateCounter(){ 
     swiftCounter+=0.01 
     round(swiftCounter) 
     swiftCounter = Double(round(100*swiftCounter)/100) 
     updateLabel() 
    } 
0

Если вы хотите две фракции, то вы можете использовать swiftCounter.round(2) вместо round(swiftCounter)

обновить текст использования:

displayTimeLBL.text = "\(swiftCounter.round(2))" 

Вот расширение Double используется:

extension Double { 
    func round(_ places: Int) -> Double { 
     let divisor = pow(10.0, Double(places)) 
     return (self * divisor).rounded()/divisor 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^