Swift - 歌曲播放样例(附带播放时间和播放进度)

本文介绍了如何使用MPMoviePlayerController进行音乐播放,并展示了如何实时显示播放时间和播放进度,包括播放器初始化、播放歌曲、计时器更新等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用MPMoviePlayerController我们可以是进行音乐播放,下面是一个播放器样例。同时,播放时还可以显示播放时间和播放进度。


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import UIKit
import MediaPlayer
 
class ViewController : UIViewController {
     
     //申明一个媒体播放控件
     var audioPlayer: MPMoviePlayerController = MPMoviePlayerController ();
     //申明一个计时器
     var timer: NSTimer ?
     
     //ProgressView控件 播放进度条
     @IBOutlet weak var progressView: UIProgressView !
     //Label控件 播放时间
     @IBOutlet weak var playTime: UILabel !   
 
     override func viewDidLoad() {
         super .viewDidLoad()
         
         onSetAudio( "http://hangge.com/file/music.mp3" )
     }
 
     override func didReceiveMemoryWarning() {
         super .didReceiveMemoryWarning()
     }
     
     //播放歌曲
     func onSetAudio(url: String ){
         //暂停当前歌曲的播放
         self .audioPlayer.stop()
         //获取歌曲文件
         self .audioPlayer.contentURL= NSURL (string:url)
         //播放歌曲
         self .audioPlayer.play()
         //先停掉计时器
         timer?.invalidate()
         //将计时器归零
         playTime!.text= "00:00"
         //开启计时器
         timer= NSTimer .scheduledTimerWithTimeInterval(0.4, target: self ,
             selector: "onUpdate" , userInfo: nil , repeats: true )
     }
     
     //计时器更新方法
     func onUpdate(){
         //返回播放器当前的播放时间
         let c=audioPlayer.currentPlaybackTime
         if c>0.0 {
             //歌曲的总时间
             let t=audioPlayer.duration
             //歌曲播放的百分比
             let p: CFloat = CFloat (c/t)
             //通过百分比设置进度条
             progressView!.setProgress(p, animated: true )
             
             //一个小算法,来实现00:00这种格式的播放时间
             let all: Int = Int (c)
             let m: Int =all % 60
             let f: Int = Int (all/60)
             var time: String = ""
             if f<10{
                 time= "0\(f):"
             } else {
                 time= "\(f)"
             }
             if m<10{
                 time+= "0\(m)"
             } else {
                 time+= "\(m)"
             }
             //更新播放时间
             playTime!.text=time
         }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值