如何制作AVPlayer& AVPlayerLayer可滚动(AVFoundation)

时间:2017-10-22 22:00:11

标签: ios swift uicollectionview avfoundation

我正在使用collectionView来显示两个图像/视频。

我正在从Firebase中检索内容。

使用图像,我可以滚动。我添加了一个scrollview并手动添加了20个imageViews,因为Firebase不允许批量检索图像/内容。然后检查是否存在值,如果存在,则显示某个索引的内容(图1-20)。

在这段代码中定义一定数字时我似乎注意到了:

  func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1

    }

我可以滚动视频。然而,由于我无法检索多个图像,我采用了更不方便的方式或添加了20个imageViews。要显示视频,我正在执行以下操作:

   if let firstVidURLString = post?.firstVideoURL, let firstVideoURL = URL(string: firstVidURLString) {
            self.volumeView.isHidden = false
            videoPlayer = AVPlayer(url: firstVideoURL)
            videoPlayerLayer = AVPlayerLayer(player: videoPlayer)
            videoPlayerLayer?.frame = self.firstImageView.frame
            videoPlayerLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
            layoutIfNeeded()
            videoPlayerLayer?.zPosition = 0
            self.contentView.layer.addSublayer(videoPlayerLayer!)
            self.volumeView.layer.zPosition = 1
            videoPlayer?.play()
            videoPlayer?.isMuted = isMuted
        }

我对它的放置方式感到满意,我已经将帧/边界定义为与我的第一个图像视图相关。当然,那应该帮助我滚动?因为它占用与一个图像视图相同的大小。唉,视频播放器/视频层只是静态的,不符合滚动视图。关于如何解决这个问题的任何想法?

谢谢。

1 个答案:

答案 0 :(得分:0)

想出来。这是为了其他任何人,将来。

将scrollView(如果有的话)连接到相应的.swift文件,即ViewController,CollectionViewCell等。

一旦你这样做,只需添加这一行。

self。[your scrollview] .layer.addSublayer(视频图层的名称!)

你会没事的!