- (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];
}
当应用加载初始视图控制器时,我的背景音乐会播放,并且循环播放。当我离开初始视图控制器时,音乐将继续在整个应用程序中播放,我希望当我离开初始视图控制器时音乐停止。
另外,也许它是无关的,但我在这行代码上有一个问题(黄色!):
NSLog([error description]);
答案 0 :(得分:1)
如果音乐继续播放,则意味着仍然保留视图控制器。例如,它是导航视图控制器的根视图控制器。
要在不再显示视图控制器时停止播放音乐,您应该使用方法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]);
答案 1 :(得分:0)
也许我误会了,但您只需使用下面的UIView
生命周期事件之一就stop
的实例调用AVAudioPlayer
。
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}