2

我是 iOS 开发的新手。我有一个简单的“点击器”应用程序,每次单击屏幕按钮时都会发出声音(mp3 文件)。

我想实现一个静音按钮,当它被选中时:

  1. 按钮图像更改(并保持更改直到再次选择)

  2. 仅应用程序的声音已静音

  3. 再次选择时返回原始状态 - 声音开启和前一个按钮图像

这是我播放声音的方式:

- (IBAction)click;


#import "soundButtonViewController.h"

@implementation soundButtonViewController

-(IBAction)click
{
   CFBundleRef mainBundle = CFBundleGetMainBundle();
   CFURLRef soundFileURLRef;
   soundFileURLRef =CFBundleCopyResourceURL(mainBundle, 
   (CFStringRef)@"click",CFSTR ("mp3"), NULL);
   UInt32 soundID;
   AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
   AudioServicesPlaySystemSound(soundID);
}

在任何地方都有这样的示例代码吗?我已经做了一些研究,似乎有一些方法,但想要针对我的要求。任何帮助或方向将不胜感激。谢谢。

4

1 回答 1

1

为了更改按钮,我通常的做法是创建一个 BOOL 来跟踪按钮的状态。在这种情况下,BOOL 是“muteOn”,按钮的 IBOutlet 是 muteButton。然后,我使用此代码来控制按钮图像以及应用程序是否静音。如果 muteON 设置为 YES,您还可以在单​​击操作(如下所示)中放置 if/then 以播放声音或不执行任何操作。记得在 .h 文件中声明你的 Bool 。

-(IBAction)muteToggle{

if (muteOn == YES) {
    muteOn = NO;
    UIImage *buttonImage = [UIImage imageNamed:@"muteOff.png"];
    [muteButton setImage:buttonImage forState:UIControlStateNormal];
}

else {
    muteOn = YES;
    UIImage *buttonImage = [UIImage imageNamed:@"muteOn.png"];
    [muteButton setImage:buttonImage forState:UIControlStateNormal];
}

}


-(IBAction) click {

 if (muteOn == YES){
//Do Nothing
 }

 else{
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef =CFBundleCopyResourceURL(mainBundle, 
 (CFStringRef)@"click",CFSTR ("mp3"), NULL);
  UInt32 soundID;
 AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
  AudioServicesPlaySystemSound(soundID);

}
}
于 2013-04-03T20:30:03.793 回答