当前位置: 首页 > 知识库问答 >
问题:

SwiftUI-电视操作系统上的AVPlayerViewController全屏

谭修竹
2023-03-14

我能够从SwiftUI呈现一个AVPlayerViewController,但是视频周围有一些填充,我希望它是全屏的。

从SwiftUI部分可以看到以下内容:

    var body: some View {
    NavigationView {
        List {
            ForEach(topicsArray) { topic in
                Section(header: Text(topic.title)) {
                    ForEach(0..<topic.shows.count) { index in
                        NavigationLink(destination: PlayerView(showID: topic.shows[index])) {
                            ShowCell(showID: topic.shows[index])
                        }
                        .navigationBarTitle("")
                        .navigationBarHidden(true)
                    }
                }
            }
        }
        .listStyle(GroupedListStyle())
        .padding()
    }.onAppear(perform: initialDataLoad)
}

从显示播放器的NavigationLink调用的代码是:

    struct PlayerView: UIViewControllerRepresentable {
       var showID:Int

       func makeUIViewController(context: Context) -> AVPlayerViewController {
           let pv = PlayerViewController()
           pv.showID = showID
           return pv
       }

       func updateUIViewController(_ viewController: AVPlayerViewController, context: Context) {

       }
   }

class PlayerViewController: AVPlayerViewController {
    var showID:Int! {
        didSet {
            setup()
        }
    }
    private var videoLaunch:VideoLaunch!

    private func setup() {
        videoLaunch = VideoLaunch(showID: showID,
                                  season: nil,
                                  episodeID: nil,
                                  selectedIndex: IndexPath(row: 0, section: 0),
                                  showType: .single,
                                  dataStructure: topics as Any,
                                  screenType: .live)

        playVideo()
    }

    private func playVideo() {
        guard let videoURL = self.videoLaunch.getMediaURL() else {print("Problem getting media URL");return}
        self.player = AVPlayer(url: videoURL)
        self.videoGravity = .resizeAspectFill
        self.player?.play()
    }

我尝试过设置界限,并使用modalpresentationstyle进行全屏显示,但都没有产生任何影响。视频周围仍然有一个10点的边界。

共有1个答案

邹铭
2023-03-14

我可以通过在playervewcontroller类中插入以下内容来解决这个问题。

    override func viewDidLayoutSubviews() {
       self.view.bounds = UIScreen.main.bounds
    }
 类似资料:
  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成

  • 本文向大家介绍操作系统的保护与安全,包括了操作系统的保护与安全的使用技巧和注意事项,需要的朋友参考一下 保护和安全性要求保护计算机资源,例如CPU,软件,内存等。这扩展到操作系统以及系统中的数据。这可以通过确保操作系统中的完整性,机密性和可用性来完成。该系统必须防止未经授权的访问,病毒,蠕虫等。 保护与安全威胁 威胁是一种本质上是恶意的程序,会对系统造成有害影响。系统中发生的一些常见威胁是- 病毒

  • 我已经添加了AVPlayServiceWController视图,这是我当前viewcontroller视图的一半,然后从URL播放视频,目前一切正常,但工作正常。 事实上,我想做景观模式时,用户点击全屏按钮,在这里无法找到按钮的动作 检测纵向或横向全屏播放的视频 是否有任何通知或presentedViewController或其他信息需要了解? 我已经读了这么多问题,没有得到任何答案,所以在这里

  • sed sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的

  • 进程与线程 对于有线程系统: 进程是资源分配的独立单位 线程是资源调度的独立单位 对于无线程系统: 进程是资源调度、分配的独立单位 进程之间的通信方式以及优缺点 管道(PIPE) 有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信 优点:可以实现任意关系的进程间的通信 缺点: 长期存于系统中,使用不当容易出错 缓冲区有限 无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父

  • 1 select,poll和epoll 其实所有的I/O都是轮询的方法,只不过实现的层面不同罢了. 这个问题可能有点深入了,但相信能回答出这个问题是对I/O多路复用有很好的了解了.其中tornado使用的就是epoll的. selec,poll和epoll区别总结 基本上select有3个缺点: 连接数受限 查找配对速度慢 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点.