当离开初始视图控制器时停止播放音乐(使用AVAudioPlayer)
问题描述:
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL fileURLWithPath: [NSString stringWithFormat:@"%@/Intro2.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
if (audioPlayer == nil)
NSLog([error description]);
else
[audioPlayer play];
}
当应用程序加载初始视图控制器并且循环良好时,我的背景音乐播放。当我离开初始视图控制器时,音乐会继续播放整个应用程序,当我离开初始视图控制器时,我希望音乐停止播放。当离开初始视图控制器时停止播放音乐(使用AVAudioPlayer)
而且,也许是无关的,但我有一个问题,在此行的代码(黄色!):
NSLog([error description]);
答
如果音乐继续播放,这意味着视图控制器仍然保留。例如,它是导航视图控制器的根视图控制器。
要停止音乐时,不再显示视图控制器,你应该使用的方法viewWillDisappear
:如果你想再次显示视图控制器的音乐恢复
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[audioPlayer stop]; // Or pause
}
,使用方法viewWillAppear
:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[audioPlayer play];
}
要删除的警告,更改行:
NSLog([error description]);
到:
NSLog(@"%@", [error description]);
答
也许我误解,但你可以简单地使用下面的UIView
生命周期事件的一个叫stop
您的AVAudioPlayer
实例。
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
谢谢你的工作完美。 – Austinj 2012-03-25 16:19:45