【问题标题】:Multiple AVPlayers on Separate UIViewControllers单独的 UIViewControllers 上的多个 AVPlayer
【发布时间】:2013-11-05 17:50:51
【问题描述】:

我有多个AVPlayers,每个UIViewControllers 播放不同的歌曲。
每当我播放另一首时,我都需要暂停 AVPlayer否则音频会重叠)。
我想让用户在后台播放音乐时遍历应用程序,因此在 viewDidDisappear:(BOOL)animated 上暂停 AVPlayer 将不起作用。
访问每个单独的 AVPlayer 控件的最佳方式是什么?

【问题讨论】:

标签: ios objective-c uiviewcontroller avfoundation avplayer


【解决方案1】:

在我看来,只有 1 个 AVPlayer 的单例很好地解决了这个问题。这样,您就可以保证播放另一首歌曲必须停止前一首歌曲。然后,在那个 AVPLayerSingleton 中,你有一个名为 avPlayer 的私有属性。您可以定义两种方法:

- (void)createPlayerWithSong:(NSString *)currentSong;
- (void)destroyPlayer

然后,在您的 createPlayerWithSong 中,您可以检查 avPlayer 是否已创建并销毁它并为每首新歌曲创建一个新的。

【讨论】:

  • 破坏 AVPlayer 不会阻止我继续播放我停止的歌曲吗?我想暂停它,而不是杀死它。
  • 是的,会的。您可以节省停止或拥有更多 AVPlayer 的时间。但是我仍然认为单例是一个不错的选择。
【解决方案2】:

可以有几种方法:

创建一个共享单例对象,该对象具有引用每个 AVPlayer 的弱属性。这样你就可以从任何地方控制它。

当您想在不同的视图控制器上控制 AVPlayer 时,使用 NSNotificationCenter 发送通知。如果您有很多要控制的 AVPlayer,这可能会变得很麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2021-07-16
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多