2017-05-26 5 views
1

Ich erstelle in einem Projekt, dass ich eine aktuelle Zeit in einem Etikett anzeigen möchte.So ändern Sie den Beschriftungsstil CMTimeGetSeconds

Ich habe Timer und Label programmgesteuert mithilfe von CMTimeGetSeconds festgelegt, um Sekunden zu verfolgen.

Ich möchte Nummer löschen, die über 10 Minuten zählt (wie die Länge des Videos nur zwei Minuten lang ist).

Was ist der gute Ansatz dafür?

enter image description here

let currentTimeLabel: UILabel = { 
    let label = UILabel() 
    label.translatesAutoresizingMaskIntoConstraints = false 
    label.text = "0:00" 
    return label 
}() 

fileprivate func setupPlayerView() { 

player?.addObserver(self, forKeyPath: "currentItem.loadedTimeRanges", options: .new, context: nil) 

     /track player progress 

     let interval = CMTime(value: 1, timescale: 2) 
     player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: { (progressTime) in 

      let seconds = CMTimeGetSeconds(progressTime) 
      let secondsString = String(format: "%02d", Int(seconds.truncatingRemainder(dividingBy: 60))) 
      let minutesString = String(format: "%02d", Int(seconds/60)) 

      self.currentTimeLabel.text = "\(minutesString):\(secondsString)" 


      }) 
+0

Sie Zustand vor der Anzeige Minute prüfen. – KKRocks

Antwort

0

Hey Sie müssen bedingten Code tun. - Swift 3.0-Code

let timeDuration : TimeInterval = 60.0 //Recording time 
var incrementPrgVal : Float = 0.1 //DEFUALT VALUE 
var startTimeIncrementSec : Float64 = 1 

private func updateStartTime() 
    { 
     if self.audioRecorder != nil { 
      startTimeIncrementSec = startTimeIncrementSec + 1; 
      if(startTimeIncrementSec > timeDuration){ 
       return; 
      } 
      if(startTimeIncrementSec < 60) 
      { 
       let valSec = fmod(startTimeIncrementSec, 60); 
       if(valSec < 10){ 
        self.objOverlayView.lblStartTime.text = String(format: "00:0%.0f",valSec); 
       } 
       else{ 
        self.objOverlayView.lblStartTime.text = String(format: "00:%.0f",valSec); 
       } 
      } 
      else{ 

       let secondPresion = fmod(startTimeIncrementSec, 60) 
       let presionTime = (startTimeIncrementSec/60) 
       if(secondPresion < 10){ 
         self.objOverlayView.lblStartTime.text = String(format: "%.0f:0%.0f",presionTime,secondPresion); 
        } 
       else{ 
        self.objOverlayView.lblStartTime.text = String(format: "%.0f:%.0f",presionTime ,secondPresion); 
       } 
      } 
     } 
    } 
This is basic snippet of code