首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用swift在进度条上显示AVAudioPlayer?

如何使用swift在进度条上显示AVAudioPlayer?
EN

Stack Overflow用户
提问于 2019-01-24 21:26:17
回答 1查看 2.4K关注 0票数 0

我正在用AVAudioPlayer播放一首歌。我需要一个进度条来显示歌曲的进度。

我的问题是进度条不能正常工作。在2-3秒内,它完成了它的进度。

代码语言:javascript
复制
func playMusic() {

    do {
        player = try AVAudioPlayer(contentsOf: (currentSong?.mediaURL)!)
        guard let player = player else { return }

        player.prepareToPlay()
        player.play()


        updater = CADisplayLink(target: self, selector: #selector(self.musicProgress))
        updater.frameInterval = 1
        updater.add(to: RunLoop.current, forMode: RunLoop.Mode.common)

        playButton.setImage(UIImage.init(named: "pause"), for: .normal)
    } catch let error as NSError {
        print(error.description)
    }
}

@objc func musicProgress()  {

    let normalizedTime = Float(self.player?.currentTime as! Double * 100.0 / (self.player?.duration as! Double) )
    self.progressMusic.progress = normalizedTime
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 21:45:01

问题就在这里:

代码语言:javascript
复制
let normalizedTime = Float(self.player?.currentTime as! Double * 100.0 / (self.player?.duration as! Double) )

这样,您将获得一个介于0.0100.0之间的值,但是根据UIProgressView文档,progress必须介于0.01.0之间。试一试

代码语言:javascript
复制
let normalizedTime = Float(self.player?.currentTime as! Double / (self.player?.duration as! Double) )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54347747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档