![SwiftUI自学成长笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/983/41202983/b_41202983.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.6 在应用程序中播放声音
本节,我们将为应用程序添加声音效果,适当、适度的音效可以提升应用程序的用户体验。
首先,需要将音效文件添加到项目之中。在“项目资源/Sound”文件夹中将soundtransitions.mp3文件拖曳到项目之中,如图1-28所示。然后在弹出的选项对话框中,确认勾选了Copy items if needed后单击Finish按钮。
![](https://epubservercos.yuewen.com/CE38D5/21440188008281406/epubprivate/OEBPS/Images/41822_44_1.jpg?sign=1738866134-tCqvRgPQxUWfQR92wOoxAJn5a4LrIs1J-0-2d0dee196be7e09c8b167dafb7ba75a3)
图1-28 添加音效文件到项目之中
然后在项目中添加一个新的Swift类型文件,将其命名为PlaySound。修改其代码如下。
![](https://epubservercos.yuewen.com/CE38D5/21440188008281406/epubprivate/OEBPS/Images/41822_44_2.jpg?sign=1738866134-kAFw4JjPccpwuuDX84rTFSIHGEs9CnWV-0-0365eced9947dbcfc08af9f34afa971e)
因为需要播放音频,所以需要先导入AVFoundation框架,该框架包含很多与音视频播放相关的API。之后声明AVAudioPlayer类型的变量audioPlayer,注意该变量为可选类型,这是因为它有可能在初始化该变量的时候出现问题,从而导致系统崩溃。
接下来创建一个函数playSound(),它包含两个参数,第一个参数为音频文件名,第二个参数为音频文件扩展名,它们都是字符串类型。在函数体内部,我们会创建一个新的变量存储音频文件在系统中的路径。如果该音频文件存在,就在if语句内部通过do……catch代码块播放音效,如果播放不成功,则在catch闭包内处理可能发生的错误事件。
如果通过AVAudioPlayer()正确载入音频文件,就可以通过play()方法播放音效了。否则会跳转到catch部分,在控制台中打印错误信息。
接下来,让我们在CardView中调用playSound()方法。
![](https://epubservercos.yuewen.com/CE38D5/21440188008281406/epubprivate/OEBPS/Images/41822_45_1.jpg?sign=1738866134-uLRifGx1hemBwKGg45H2IlJ1XWYWu5d8-0-db2ec2c4a392b7fc6afb68faffd0bca9)
回到ContentView.swift文件,在预览窗口中启动Live模式并单击按钮测试音频播放的效果,当听到声音以后,你是否感觉这个应用程序很不错呢?