iOS SwiftUI 视频自动播放

Posted

技术标签:

【中文标题】iOS SwiftUI 视频自动播放【英文标题】:iOS SwiftUI video autoplay 【发布时间】:2021-01-19 17:32:40 【问题描述】:

我正在开发一个 ios 应用程序,该应用程序在一个视图上具有一组按钮,当点击其中一个按钮时,应用程序导航到视频的新视图并应自动播放视频。视频目前没有自动播放,但会在点击时播放,我的理解是视频应该使用下面的代码自动播放。感谢您的帮助(这是我第一次构建 iOS 应用程序)。

let player = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "videoToPlay", ofType: "mp4")!))

VideoPlayer(player: player)
  .edgesIgnoreSafeArea(.all)
  .onAppear() 
    player.play()

【问题讨论】:

所以当它是主视图时这似乎有效,但我正在使用带有导航到新视图的按钮的主屏幕,并且似乎 segue 导致视频自动播放中断.有什么建议吗? 同理。和全屏,自动旋转是问题。 【参考方案1】:

您是对的,以下代码确实可以工作,但由于.onAppear 在 SwiftUI 中的工作方式,它的行为可能与您预期的不同。除非您的视频在某种形式的 lazy 视图中,并且在滚动之前处于屏幕外,否则 .onAppear 将在视图的初始渲染时运行。

您没有说明您的用例,但我建议您可以使用计时器或某种 UIKit 适配来实现某些目标。祝你好运!

【讨论】:

【参考方案2】:

从工作表自动播放时我遇到了同样的问题。我通过在 onAppear 中加载视频项并在视图出现后播放它来解决它:

var player = AVPlayer()

VideoPlayer(player: player)
    .onAppear
      if player.currentItem == nil 
            let item = AVPlayerItem(url: URL(string: url)!)
            player.replaceCurrentItem(with: item)
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: 
            player.play()
        )
    

【讨论】:

以上是关于iOS SwiftUI 视频自动播放的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的 UITableViewCell 中播放视频(自动播放)

在 Safari iOS 14.2 上自动播放视频 HTML

youtube.com 上的视频如何在 iOS 上自动播放

iOS 自动播放视频 WebView

iOS的视频自动播放在应用程序中不起作用

ios系统下不能自动播放视频