如何使AVPlayer和AVPlayerLayer可滚动(AVFoundation)

4

我正在使用collectionView来显示图片和视频。

我从Firebase中检索内容。

对于图片,我可以滚动。我添加了一个滚动视图并手动添加了20个imageView,因为Firebase不允许批量检索图像/内容。然后检查值是否存在,如果存在,则在特定索引处显示内容(即第1-20张图像)。

我似乎注意到当在此代码片段中定义某个数字时:

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

    }

我可以滚动浏览视频。但是由于我不能检索多个图像,我只好采用更不方便的方式,添加20个ImageView。为了显示视频,我正在执行以下操作:

   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个回答

1

搞定了。这是给未来的任何人的。

如果您有scrollView,请将其连接到相应的.swift文件,即ViewController、CollectionViewCell等。

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

self.[您的scrollView].layer.addSublayer(视频层的名称!)

然后你就没问题了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接