iOS/Swift:如何在 AVPlayerViewController 的播放控件中添加共享按钮?

Posted

技术标签:

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

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

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

for subview in playerViewController.view.subviews 
    
    

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

有什么想法吗?

【问题讨论】:

我不认为你可以这样做,你需要创建自己的控件 @Scriptable 我同意。 @Scriptable 如果我喜欢这个***.com/a/33677661/3581620,你认为这会以同样的方式工作吗(一次点击使控件可见,第二次点击使其消失,等等...)? 【参考方案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

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

【讨论】:

以上是关于iOS/Swift:如何在 AVPlayerViewController 的播放控件中添加共享按钮?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:Swift - 如何在触摸地图上添加精确定位并获取该位置的详细地址?

iOS/Swift:如何在 AVPlayerViewController 的播放控件中添加共享按钮?

如何在 iOS(Swift 3)上断开 Firebase 通知?

ios - 如何在 ios swift 中正确实现后台获取

在 iOS/swift 中上传图像时如何删除裁剪选项

如何在iOS Swift 3中从键盘中删除更改语言键按钮