【问题标题】:iOS/Swift: How to add share button in the playbackControls of a AVPlayerViewController?iOS/Swift:如何在 AVPlayerViewController 的播放控件中添加共享按钮?
【发布时间】:2019-05-13 14:15:16
【问题描述】:

我想添加一个分享按钮以与UIActivityController 分享视频(例如通过邮件)。

我试图访问 AVPlayerViewController 的属性,但似乎我们不再允许它了...

for subview in playerViewController.view.subviews 
    {
    }

如何在playbackControls右侧的播放按钮旁边添加一个简单的按钮?

有什么想法吗?

【问题讨论】:

  • 我不认为你可以这样做,你需要创建自己的控件
  • @Scriptable 我同意。
  • @Scriptable 如果我喜欢这个stackoverflow.com/a/33677661/3581620,你认为这会以同样的方式工作吗(一次点击使控件可见,第二次点击使其消失,等等...)?

标签: ios swift avplayerviewcontroller


【解决方案1】:

如果您查看视图控制器的视图的子视图,您将看到它的单个视图称为AVPlayerViewControllerContentView。在制作视图控制器时,您可以这样做:

func showFullScreenVideo(using player: AVPlayer) {
    // setup your player view controller
    let playerViewController = AVPlayerViewController()
    playerViewController.player = player
    present(playerViewController, animated: true) { [weak self] in
      self?.addShareButton(to: playerViewController)
    }
}

private func addShareButton(to playerViewController: AVPlayerViewController) {
    if let playerContentView = playerViewController.view.subviews.first {
        let someView = SomeView()
        playerContentView.addSubview(someView)
        // use your own layout code:
        someView.constrain(.centerX, .centerY, to: playerContentView)
    }
}

在完成块内添加共享按钮可确保 playerViewController.view 已加载并可供使用。您可以尝试以多种方式强制加载视图。这是你的选择。另一种可能的方法是在添加分享按钮之前添加这行代码:

_ = playerViewController.view

而不是使用完成块。可能有效,也可能无效,但完成块方法肯定有效。

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多