将 AVPlayer 子视图添加到 UIView

Mor*_*itz 3 uiview ios avplayer avplayerviewcontroller

我正在使用以下代码创建一个启用分页的垂直滚动视图,该视图工作正常。现在我想将 AVPlayer (?) 类型的子视图添加到homeView, view2, view3。我也可以放入效果很好setupCustomPlayer()initiateScrollView()功能。然而,它不附属于任何先前提到的视图。如果我尝试使用该函数添加子视图,addSubview(anything)它会告诉我需要一个 UIView。我需要 UIViews,因为垂直滑动提要非常重要。有人知道如何将其添加为子视图吗?该视频将覆盖整个屏幕并作为一种背景视频可以说(如果您想知道)

代码:

func setupCustomPlayer() {

    print("check")

    AVPlayerVC.view.frame = self.view.frame
    AVPlayerVC.view.sizeToFit()
    AVPlayerVC.showsPlaybackControls = false
    self.view.addSubview(AVPlayerVC.view)

    let videoURL = NSURL(string: "http://URL")


    let player = AVPlayer(url: videoURL! as URL)
    AVPlayerVC.player = player
    AVPlayerVC.player?.play()
}

func initiateScrollView() {

    //create scrollView with paging enabled
    let scrollView = UIScrollView(frame: view.bounds)
    scrollView.isPagingEnabled = true
    view.addSubview(scrollView)

    //do not show vertical scroll indicator
    scrollView.showsVerticalScrollIndicator = false;

    //get page size
    let pageSize = view.bounds.size

    //individual views
    let homeView = UIView()
    homeView.backgroundColor = .green

    let view2 = UIView()
    view2.backgroundColor = .blue

    let view3 = UIView()
    view3.backgroundColor = .red

    //array with individual views
    let pagesViews = [homeView, view2, view3]

    //amount of views
    let numberOfPages = pagesViews.count

    //add subviews (pages)
    for (pageIndex, page) in pagesViews.enumerated(){
        page.frame = CGRect(origin: CGPoint(x:0 , y:CGFloat(pageIndex) * pageSize.height), size: pageSize)
        scrollView.addSubview(page)
    }

    //define size of scrollView
    scrollView.contentSize = CGSize(width: pageSize.width, height: pageSize.height * CGFloat(numberOfPages))

}
Run Code Online (Sandbox Code Playgroud)

Jor*_*llo 7

你能试试这个吗?

func setupCustomPlayer() {

    print("check")
    let player = AVPlayer(url: yourFileUrl)
    var playerLayer: AVPlayerLayer?
    playerLayer = AVPlayerLayer(player: player)
    playerLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
    playerLayer!.frame = self.view.frame
    self.view.layer.addSublayer(playerLayer!)

    player.play()
}
Run Code Online (Sandbox Code Playgroud)

  • 不客气,在这种情况下,如果您不介意,可以分享您的解决方案吗?谢谢。 (3认同)