AVAudioPlayer 类提供了播放音频文件的功能,在本次教程中,我们将对一个音乐文件进行播放暂停和停止操作,此外还会显示标题和播放时间。本次教程使用iOS8和Xcod6.3.1

打开Xcode创建一个新的 Single View Application ,使用IOS8SwiftPlayMusicAVAudioPlayerTutorial 作为 product name ,并填写组织名称和标识符。选择 Swift 语言并确保设备选择iPhone。

在这个工程中我们需要开始暂停和停止按钮的图片和一个mp3文件。你可以在这里下载 。解压文件并把它们添加到工程,确保是拷贝他们到目标文件夹。

转到故事板拖两个标签和两个按钮到主视图。依次选择他们并在 Size Inspector 填入下列值。

  • 上面的标签 -> X: 16, Y: 60, Width: 568, Height:17
  • 中间的标签 -> X: 250, Y: 120, Width: 100, Height: 36
  • 左边的按钮 -> X: 16, Y: 220, Width: 102, Height: 102
  • 右边的按钮 -> X:484, Y: 220, Width: 102, Height: 102

再依次选择他们在 Attributes Inspector 添加以下值。

  • 上面的标签: Center Alignment, Font – System 14.0
  • 中间的标签: Center Alignment. Font – System Bold 30.0
  • 左边的按钮: Type -Custom, Image – playpause.png
  • 右边的按钮: Type – Custom, Image – stop.p

按下 Resolve Auto Layout 按钮在故事板的右下角,选择 Reset to Suggested Constraints

现在故事板看起来是这样的

选择助理窗口并确保 ViewController.swift 可见。

按住 Ctrl 拖动顶部的标签创建下列的插口。

按住 Ctrl 拖动中间的标签创建下列的插口。

按住 Ctrl 拖动播放暂停图片创建下列动作。

按住 Ctrl 拖动播放停止图片创建下列动作。

在 ViewController.swift 文件中导入 AVFoundation 框架。

import AVFoundation

添加下列属性在 ViewController 类中

var audioPlayer = AVAudioPlayer()
var isPlaying = false
var timer:NSTimer!

AVAudioPlayer 类可以让你播放任何iOS支持的音频格式。使用 isPlaying 布尔值来表示当前是否正在播放音乐。 NSTimer 属性用来显示当前播放音乐的时间。

修改 viewDidLoad 方法

override func viewDidLoad() {super.viewDidLoad()trackTitle.text = "Future Islands - Tin Man"var path = NSBundle.mainBundle().URLForResource("Future Islands - Tin Man", withExtension: "mp3")var error:NSError? audioPlayer = AVAudioPlayer(contentsOfURL: path!, error: &error) }

将标题赋值给标题的标签,然后用音乐文件初始化 AVAudioplayer ,接着实现playOrPauseMusic 方法。

@IBAction func playOrPauseMusic(sender: AnyObject) {if isPlaying {audioPlayer.pause()isPlaying = false } else { audioPlayer.play() isPlaying = true timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "updateTime", userInfo: nil, repeats: true) } }

首先我们判断是否正在播放,如果是,那么暂停音乐并改变 isPlaying 的值,如果没有播放,我们播放它并改变 isPlaying 的值。然后创建一个 NSTimer 对象用来每秒调用 updateTime 方法,我们来实现它。

func updateTime() {var currentTime = Int(audioPlayer.currentTime)var minutes = currentTime/60var seconds = currentTime - minutes * 60playedTime.text = NSString(format: "%02d:%02d", minutes,seconds) as String }

播放器的 currentTime 属性将被分割成分和秒两部分用来显示播放的时间。最后实现 stopSound 方法。

@IBAction func stopMusic(sender: AnyObject) {audioPlayer.stop()audioPlayer.currentTime = 0isPlaying = false }

播放器调用停止方法并重置当前播放时间。当下次按下播放时,将会从头开始播放。 isPlaying 属性将被赋值为false,构建并运行程序,按下播放/暂停按钮和停止按钮来控制音乐。

你可以下载 IOS8SwiftPlayMusicAVAudioPlayerTutorial 的源代码在GitHub 的仓库上。

转载于:https://www.cnblogs.com/Free-Thinker/p/5044786.html

iOS8 用AVAudioPlayer播放音乐(Swift)相关推荐

  1. 【转】AVAudioPlayer播放音乐,最清晰明了

    在xcode中手动添加frameWork. #import "MusicViewController.h" #import <AVFoundation/AVFoundatio ...

  2. IOS 后台运行 播放音乐

    iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,Av ...

  3. IOS 后台执行 播放音乐

    iOS 4開始引入的multitask.我们能够实现像ipod程序那样在后台播放音频了. 假设音频操作是用苹果官方的AVFoundation.framework实现.像用AvAudioPlayer.A ...

  4. iOS播放音乐与播放系统声音

    相同点: 都可以播放声音 不同点: 播放系统声音: 时间较短,不能暂停或者停止 播放音乐: 可播放时间较长的音乐,歌曲等. 可以暂停,停止. 代码块:播放系统声音  (大体分为四步) #import ...

  5. iPhone开发播放音乐与按钮声音

    1.背景音乐播放,支持mp3格式 循环播放长音乐. 这种播放音乐的方式导入框架#import <AVFoundation/AVFoundation.h>: NSString *musicF ...

  6. iPhone播放音乐

    iPhone播放音乐 今天我们简要介绍如何在iPhone中播放音乐: 强烈建议你参考官方文档(需要登录): http://developer.apple.com/library/ios/#docume ...

  7. IOS后台运行 之 后台播放音乐

    IOS后台运行 之 后台播放音乐 iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像 ...

  8. android在线播放音乐

    2019独角兽企业重金招聘Python工程师标准>>> android在线音乐 一种方法是调用android自带的播放器 //调用系统自带播放器Intent intent = new ...

  9. 解决 后台播放音乐时,设置手机铃声,后台音乐不会暂停

    2019独角兽企业重金招聘Python工程师标准>>> 手机后台播放音乐时,设置手机铃声,后台音乐不会暂停,此现象的为设置手机铃声界面,并没要加入播放的foucs机制, 此修改在pa ...

最新文章

  1. 如何将DATASET的数据导出到XML文件,并直接下载
  2. oracle tax 中国税,oracle_TAX_税基础设置操作手册.doc
  3. 前端用crypto.js进行加密和解密
  4. python装饰器 property_python中property和setter装饰器用法
  5. 一份好的工作总结才能帮你升职加薪
  6. 【需求工程】需求分析的5W1H8C1D方法
  7. 用汇编的眼光看C++(之循环流程)
  8. fastText分类器
  9. SingalR 构建 推送服务器初探
  10. Java打印菱形(一)
  11. 2022-2027年中国新能源汽车功率电子行业市场全景评估及发展战略规划报告
  12. springboot-全局异常处理器
  13. win7计算机所有软件无法运行程序,解决Win7应用程序无法启动的方法
  14. matlab irandon函数,在路上●我的年青●悠忽两年
  15. 让你彻底理解线性代数中的概念——《线性代数的本质》系列视频笔记
  16. WebRTC和APP互通连麦直播
  17. Java+Swing+MySQL机票预订和管理系统
  18. 信号的宽带和计算机网络的宽带有什么不同,计算机网络(一)带宽理解
  19. 店铺消费短信通知模板
  20. Maya菜单中英文对照表(一)

热门文章

  1. CSS多行文本垂直居中
  2. cnetos6,centos7添加新网卡,系统不识别的解决办法
  3. Ajax搜索结果页面下方的分页按钮的生成
  4. 取得Servlet文件的絕對路徑;文件讀寫操作
  5. cleaning selected projects has encountered a problem errors occurred during build
  6. android 获取MP4文件的图片大小
  7. Vue—上手实践—环境搭建
  8. Spring框架—体系结构
  9. Core-3399-JD4 六核高性能AI核心板
  10. 浏览器title中的小图标0927 0928