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/60
var seconds = currentTime - minutes * 60 playedTime.text = NSString(format: "%02d:%02d", minutes,seconds) as String
}

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

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

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

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

iOS8 用AVAudioPlayer播放音乐(Swift)的更多相关文章

  1. iOS-----使用AVAudioPlayer播放音乐

    使用AVAudioPlayer播放音乐 AVAudioPlayer是一个属于AVFoundation.framework的类.它作用类似于一个功能强大的播放器.AVAudioPlayer支持广泛的音频 ...

  2. iOS音频与视频的开发(一)-使用AVAudioPlayer播放音乐、使用AVPlayerViewController播放视频

    iOS的多媒体支持非常强大,它提供了多套支持多媒体的API,无论是音频.视频的播放,还是录制,iOS都提供了多种API支持.借助于这些API的支持,iOS应用既可以查看.播放手机相册中的照片.视频,也 ...

  3. AVAudioPlayer播放音乐

    1:首先创建一个新的项目,继承自UIViewController 2:导入框架AVFoundation.framework 右键工程名,在Build Phases的Link Binary With L ...

  4. iOS -- AVAudioPlayer播放音乐

    一. AVAudioPlayer:                          声明音乐控件AVAudioPlayer,必须声明为全局属性变量,否则可能不会播放,AVAudioPlayer只能播 ...

  5. ios学习:AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件

    首先要导入AVFoundation框架及 #import <AVFoundation/AVFoundation.h>头文件 注意:要在真机上调试 下面是ipad上的调试效果 下面是代码,代 ...

  6. iOS开发系列--扩展--播放音乐库中的音乐

    众所周知音乐是iOS的重要组成播放,无论是iPod.iTouch.iPhone还是iPad都可以在iTunes购买音乐或添加本地音乐到音乐 库中同步到你的iOS设备.在MediaPlayer.fram ...

  7. iPhone播放音乐

    来源:http://blog.csdn.net/htttw/article/details/7842295 iPhone播放音乐 今天我们简要介绍如何在iPhone中播放音乐: 强烈建议你参考官方文档 ...

  8. IOS播放音乐和音效

    1.播放音效 1.1 首先获取到音效文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:soundFileName ofType: ...

  9. IOS AVAUDIOPLAYER 播放器使用

    1. 导入 AVFoundation.framework 2.导入头文件  #import <AVFoundation/AVFoundation.h> 3. player = [[AVAu ...

随机推荐

  1. 【PAT】1025. PAT Ranking (25)

    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1025 题目描述: Programming Ability Test (PAT) is orga ...

  2. 消息提示demo

    我们做网站,经常会遇到消息提示. 我仿照腾讯的邮箱做了个小demo. 提示出现后,几秒消失.提示的位置是固定的.不受布局的影响. 效果如下: 提示通常分两种,一种使错误提示,一种是成功提示.用不同的c ...

  3. __stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简介

    1. 今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter); 不解为什么要用WINAPI宏定义,查 ...

  4. 关于URL编码的问题

    在进行WEB开发时,字符集编码常常困扰着我们.我们需要区分两种情况,一是URL编码,二是HTTP Body编码.这两种编码所处理的机制不同. URL编码和解码 客户端负责对URL编码,服务端负责解码. ...

  5. API经济产业

    技术大咖为我们铺好了前进道路,我们为什么还要敬而远之舍近索远呢?充分利用开源,利用API进行App有效整合. 为应用添加日志功能,Loggly; 为应用添加用户管理和身份认证模块,Stormpath; ...

  6. 【设计模式】学习笔记13:组合模式(Composite)

    本文出自   http://blog.csdn.net/shuangde800 认识组合模式 上一篇中,我们可以用迭代器来实现遍历一个集合(数组,ArrayList, Vector, HashTabl ...

  7. Material Design之FloatingActionButton的使用

    FloatingActionButton是继承至ImageView,所以FloatingActionButton拥有ImageView的全部属性. CoordinatorLayout能够用来配合Flo ...

  8. 第001篇——C#学习计划开启

    大年三十了,选在今天开启Blog,就是为了克服拖延症! Windows桌面程序,多年的执念,到现在一直不会写,再拖拉谁知道又要拖几年? 特此立下目标: 基本掌握C# winform 半年内可以做出一些 ...

  9. 牛掰的图片等比缩放js代码

    function resizeImg(img,oAW,oAH){ var oimgW = img.width, oimgH = img.height, oimg = img, oY = (oimgH/ ...

  10. Gitlab管理下本地Git配置

    公司项目组用的是Gitlab,组内成员分配有有固定的git个人账户,不同成员有不同的模块编辑权限,使用前需要配置好本地的Git.对一直使用svn的小菜菜来说,这个还是需要一点步骤配置下才可以使用的.配 ...