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 中播放视频(自动播放)