我有 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.
更新答案:因为您想在加载和返回查看时播放音乐文件。 性能方面可能存在一些问题。 因为你调用了 Music 文件立即加载的时候查看。 所以查看下面的解释行。
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/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |