iOS 16+ 上缺少 SwiftUI VideoPlayer 全屏关闭按钮

Jai*_*bin 5 ios swift swiftui

我正在使用 a.fullScreenCover来呈现VideoPlayer视图。在 iOS 15 及更低版本上,这样做会在左上角显示关闭按钮,如下所示:

在此输入图像描述

但在iOS 16上,似乎并没有出现。

在此输入图像描述

代码如下:

.fullScreenCover(
        isPresented: $showVideoSheet,
        onDismiss: {
            selectedVideo = nil
        },
        content: {
            if let video = selectedVideo {
                VideoPlayerView(video: video)
            }
        }
    )
Run Code Online (Sandbox Code Playgroud)

VideoPlayerView在下面:

struct VideoPlayerView: View {

    @StateObject var model: VideoPlayerViewModel
    let video: VideoModel

    init(video: VideoModel) {
        self._model = StateObject(wrappedValue: VideoPlayerViewModel(video: video))
        self.video = video
    }

    var body: some View {
        if let player = model.player {
            VideoPlayer(player: player)
                .ignoresSafeArea()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

视图模型只加载 AVPlayer 等。

有什么建议么?

Tam*_*gel 1

您可以制作自己的关闭按钮。

@State var shouldShowVideoPlayer = false

var body: some View {
    Text("Example")
    .fullScreenCover(
        isPresented: $shouldShowVideoPlayer,
        onDismiss: {
            selectedVideo = nil
        },
        content: {
            ZStack(alignment: .topLeading) {
                if let video = selectedVideo {
                    VideoPlayerView(video: video)
                }

                Button {
                    shouldShowVideoPlayer = false
                } label: {
                    Image(systemName: "xmark")
                }
                .background(Color.white)
                .padding(20)
            }
        }
    )
}
Run Code Online (Sandbox Code Playgroud)