Swift 3
let currentTime:Double = player.currentItem.currentTime().seconds
Вы можете получить секунды вашего текущего времени, обратившись к свойству seconds
currentTime()
.Это вернет Double
, который представляет секунды во времени.Затем вы можете использовать это значение, чтобы создать удобочитаемое время для представления вашему пользователю.
Сначала включите метод, который возвращает временные переменные для H:mm:ss
, которые вы будете отображать пользователю:
func getHoursMinutesSecondsFrom(seconds: Double) -> (hours: Int, minutes: Int, seconds: Int) {
let secs = Int(seconds)
let hours = secs / 3600
let minutes = (secs % 3600) / 60
let seconds = (secs % 3600) % 60
return (hours, minutes, seconds)
}
Далее, метод, который преобразует значения, которые вы извлекли выше, в читаемую строку:
func formatTimeFor(seconds: Double) -> String {
let result = getHoursMinutesSecondsFrom(seconds: seconds)
let hoursString = "\(result.hours)"
var minutesString = "\(result.minutes)"
if minutesString.characters.count == 1 {
minutesString = "0\(result.minutes)"
}
var secondsString = "\(result.seconds)"
if secondsString.characters.count == 1 {
secondsString = "0\(result.seconds)"
}
var time = "\(hoursString):"
if result.hours >= 1 {
time.append("\(minutesString):\(secondsString)")
}
else {
time = "\(minutesString):\(secondsString)"
}
return time
}
Теперь обновите интерфейс с предыдущими вычислениями:
func updateTime() {
// Access current item
if let currentItem = player.currentItem {
// Get the current time in seconds
let playhead = currentItem.currentTime().seconds
let duration = currentItem.duration.seconds
// Format seconds for human readable string
playheadLabel.text = formatTimeFor(seconds: playhead)
durationLabel.text = formatTimeFor(seconds: duration)
}
}