发现一个奇怪的情况。 在新版本的 iOS 中,如果视频播放器放置在列表中,则不会显示视频播放器的控件。
在 iOS 15.6.1 中,这段代码可以正常工作。
struct ContentView: View
{
var body: some View
{
VStack{
List(0..<2) { i in
VStack
{
let vp = AVPlayer(url: URL(string: "http://wiu.ks-api.com/Content/file_3004.mp4")!)
VideoPlayer(player: vp)
.frame(maxWidth: .infinity, idealHeight: 320)
.padding(.horizontal, -20)
.onDisappear{vp.pause()}
}
}
}
}
}
先谢谢大家了
您可以将
.clipped()
修饰符添加到 VideoPlayer()
它在 TabView 中工作 .tabViewStyle(.page)
我找到的唯一解决方案是完全删除 VideoPlayer 结构,因为它看起来像是播放器上的一个愚蠢的包装器,并创建我们自己的
UIViewRepresentable
struct VideoPlayerTwo: UIViewRepresentable {
private let controller: AVPlayerViewController
init(player: AVPlayer) {
let controller = AVPlayerViewController()
controller.player = player
controller.showsPlaybackControls = true
self.controller = controller
}
func makeUIView(context: Context) -> some UIView {
return controller.view
}
func updateUIView(_ uiView: UIViewType, context: Context) {}
func sizeThatFits(_ proposal: ProposedViewSize, uiView: UIViewType, context: Context) -> CGSize? {
return proposal.replacingUnspecifiedDimensions()
}
}
我最初尝试使用
UIViewControllerRepresentable
,但由于某种原因,那个从未显示控件。