iphone - 如何让音频播放器再次播放?

标签 iphone ios uiview uiviewcontroller avaudioplayer

我有 2 个 View Controller ,我在第一个 View Controller 中使用 AVAudioPlayer 播放音乐。 我转到第二个 View Controller 并停止音乐:

[audioPlayer stop];    
[UIView beginAnimations:@"Curl View" context:nil];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
        [self.view addSubview:secondController.view];
        [UIView commitAnimations];

当我再次返回第一个 View Controller 时,我想再次播放音乐,但代码不会再次触及 viewDidLoad。 这是我要返回的代码:

[UIView beginAnimations:@"Flipping View" context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view.superview cache:YES];
    [self.view removeFromSuperview];
    [UIView commitAnimations];

请分享一些解决方案或代码执行后的内容..提前致谢

最佳答案

发生这种情况只是因为您从 viewDidLoad 调用音乐播放代码 并且 viewDidLoad 方法仅对 ViewController 调用一次。

您应该从 viewWillAppear 而不是 viewDidLoad 方法调用代码(播放音乐)。

I suggest you should read UIViewControler Documentation.

更新答案:因为您想在加载和返回查看时播放音乐文件。 性能方面可能存在一些问题。 因为您调用音乐文件时会立即加载 View 。 因此请查看下面的解释。

  • ViewDidLoad - 在 View Controller 将其 View 层次结构加载到内存中后调用此方法。无论 View 层次结构是从 nib 文件加载还是在 loadView 方法中以编程方式创建,都会调用此方法。您通常会重写此方法来对从 nib 文件加载的 View 执行额外的初始化。

  • ViewWillAppear:当这个被调用时,这意味着 iPhone 已经准备好向用户显示 UIView,你在这里做的任何繁重的事情都会以非常明显的方式影响性能(例如动画延迟,或播放音乐等)。

  • ViewDidAppear:最后,这通知 View Controller 其 View 已添加到 View 层次结构中。因此此方法足以完成此类任务,例如播放音乐文件。注意- ->您必须在实现中的某个时刻调用 super

关于iphone - 如何让音频播放器再次播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9511877/

相关文章:

使用自动布局的 iOS 消息单元格宽度/高度

ios - 如果我向 UIButton 添加背景颜色,我该如何插入它以使背景变小?

iphone - 使用drawRect :?进行自定义渲染时我是否负责裁剪

iphone - 核心数据迁移失败,错误为 : Failed to save new store after first pass of migration

ios - 如何获取带小数的格式数字(XCode)

iphone - 使用 Storyboard在两个 Controller 之间传递数据

iPhone - 转换为 NSData?

iphone - unity生成iphone源码后无法运行游戏

iphone - 将 UIView 的表示保存到文件

ios - 如何在 UIViewcontroller 中向上移动模态 UIView(StoryBoard)