小编Dav*_*ese的帖子

SwiftUI:允许用户通过按按钮启用画中画(iOS)

我正在设计一个应用程序,允许用户在 SwiftUI 视图中观看特定视频。我想支持 PiP,AVPictureInPictureController.isPictureInPictureSupported() 始终返回 true,而 pipController.isPictureInPicturePossible 有时返回 true,但通常在视频实际播放时不会返回 true。我可能误解了如何使用 AVPictureInPictureController。

我的应用程序使用以下代码初始化一个称为 FullScreenVideoView 的视图:

init(player: KHKVideoPlayer, aspectRatio: CGFloat, presentingViewController pvc: UIViewController?) {
    self.aspectRatio = aspectRatio
    self.pvc = pvc
    self.model = FullScreenVideoViewerModel(player: player)
    self.playerController = KHKPlayerController(player: player.avPlayer, cornerRadius: 0)
    
    if AVPictureInPictureController.isPictureInPictureSupported() {
        self.pipController = AVPictureInPictureController(playerLayer: AVPlayerLayer(player: player.avPlayer))!
    }
    
    self.isMuted = player.avPlayer.isMuted
}
Run Code Online (Sandbox Code Playgroud)

然后,在视图主体内,它通过调用初始化程序中定义的playerController来显示视频:

playerController
                    .frame(height: aspectRatio * geometry.size.width)
                    .onTapGesture {
                        if self.model.player.avPlayer.isPlaying {
                            self.model.pause()
                        } else {
                            self.model.play()
                        }
                    }
Run Code Online (Sandbox Code Playgroud)

PlayerController 是 AVPlayerViewController 的包装器:

struct KHKPlayerController: UIViewControllerRepresentable {
typealias UIViewControllerType = …
Run Code Online (Sandbox Code Playgroud)

ios swift avkit picture-in-picture swiftui

5
推荐指数
1
解决办法
2930
查看次数

标签 统计

avkit ×1

ios ×1

picture-in-picture ×1

swift ×1

swiftui ×1