在故事板按钮点击时播放自定义声音

Pet*_*r V 1 xcode objective-c ios

我在.storyboard内部制作了自定义按钮,需要在敲击时播放声音(不是音板,只是按下按钮的自定义音频文件).
故事板编辑器中是否有声音选项可以实现此功能?如果没有,还能实现这一目标吗?

YDL*_*YDL 5

故事板不允许您为按钮分配"音频".然而,你可以做的是在一个函数中使用相当简单的AVAudioPlayer ;

添加库

要使用AVAudioPlayer,首先需要为项目添加2个库/框架.这些框架包含实际播放器的基本代码,并允许我们(应用编写者)使用它.

在xCode中选择您的项目,然后转到Build Phases.选择Link Binary with Libraries.按下小[+] -图标并添加框架:

  • AudioToolbox
  • AVFoundation

构架

现在我们必须告诉我们的代码我们将实际使用这两个框架.打开控制器的.H文件,在顶部添加:

#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
Run Code Online (Sandbox Code Playgroud)

活动+播放器

将UIButton的一个事件(通过故事板)绑定到一个新的IBAction函数(例如playSound),例如Touch Up Inside.

通过绑定事件,您告诉应用程序,如果用户按下按钮 - >运行此功能/代码.

现在,在你新创建的IBAction函数(例如playSound)中添加一些代码来创建一个带有MP3的播放器并播放它;

- (IBAction)playSound:(id)sender
{

   // Load in a audio file from your bundle (all the files you have added to your app)
   NSString *audioFile = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"mp3"];

   // Convert string to NSURL
   NSURL *audioURL = [NSURL fileURLWithPath:audioFile];

   // Initialize a audio player with the URL (the mp3)
   AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:nil];

   // Start playing
   [player play];

}
Run Code Online (Sandbox Code Playgroud)

我希望这能帮助你朝着正确的方向前进吗?

查看Apple 的文档,了解除了"播放"之外AVAudioPlayer所具有的功能/方法(例如缓冲,暂停等)