如何通过UISlider更新iPhone上的音乐音量?

时间:2011-08-27 10:14:26

标签: iphone objective-c ios uislider

我试图制作一个控制背景音乐音量的UISlider,无论我设置的值应该是音乐的音量。问题是,当我在模拟器中运行应用程序并移动滑块时,音量保持原始音量,它不会更新。

我是编程新手,所以我仍然需要基础知识的帮助。

这是我的viewcontroller.h:

@interface FifthViewController : UIViewController <AVAudioPlayerDelegate> {

IBOutlet UISlider *slider;
IBOutlet UIAlertView *alert;
AVAudioPlayer *theAudio;


}


-(IBAction)alertbutton;
-(IBAction)changeVolume;
@end;

这里是viewcontroller.m:

- (void)viewDidLoad

{
NSString *path = [[NSBundle mainBundle] pathForResource:@"background music" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
theAudio.numberOfLoops = -1;      
theAudio.volume=slider.value;


[super viewDidLoad];
}

我已将“滑块”连接到水平滑块,声音播放和循环。如果我在Xcode中设置滑块的值更高或更低,当我运行应用程序时,音量会相应调整。但如果在应用程序中我更改了滑块的值,则音量保持不变。任何人都可以查看我的代码并告诉我我做错了什么以及如何解决它?

2 个答案:

答案 0 :(得分:0)

假设您的控制器中有AVAudioPlayer个设置实例。

将滑块设置为从0.0到1.0运行并将其连接到动作。

-(void)volumeValueChange:(UISlider *)sender
{
    (AVAudioPlayer *)myaudioplayer.volume = sender.value;
}

答案 1 :(得分:0)

// .m实现其中audioPlayer是AVAudioPlayer的对象

-(void)volumeValueChange:(UISlider *)sender
{
    audioPlayer.volume = sender.value;
}