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

时间:2012-08-31 23:03:19

标签: objective-c ios xcode

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

2 个答案:

答案 0 :(得分:5)

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

添加库

要使用AVAudioPlayer,首先需要在项目中添加2个库/框架。这些框架包含实际玩家的基本代码,并允许我们(应用程序编写者)使用它。

在xCode中选择您的项目,然后转到构建阶段。选择链接二进制文件库。按小 [+] -icon并添加框架:

  • AudioToolbox
  • AVFoundation

框架

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

#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>

活动+播放器

将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];

}

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

检查Apple的doc以了解除了“播放”之外AVAudioPlayer所具有的功能/方法(例如缓冲,暂停等)

答案 1 :(得分:2)

使用

设置音量时,上述代码有效

[player setVolume:1.0];

直到我这样做才开始工作。