【问题标题】:play video in single cell in collection view在集合视图的单个单元格中播放视频
【发布时间】:2017-03-15 12:38:31
【问题描述】:

我在单个单元格的集合视图单元格中播放视频时遇到问题

单元格可以同时有视频和图像,当它的视频是从本地目录下载和播放视频时

collection View 每行有 2 个单元格

问题是:我希望视频一次只能在 1 个单元格中播放,并在该视频不再可见时停止

我在单元格中为索引路径中的项目使用了以下代码。

let localVideoURL = getDownloadedVideoPathFromDocumentDirectory(filename: eachTimeLineFeed.mediaFile!)
    print("Play Video from URL \(localVideoURL)")

        let item = AVPlayerItem(url: localVideoURL!);
        self.avPlayer = AVPlayer(playerItem: item);
        self.avPlayer?.actionAtItemEnd = .none
        self.avPlayerLayer = AVPlayerLayer(player: self.avPlayer);

        self.avPlayerLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
        self.avPlayerLayer?.frame = CGRect(x: 0, y: 0, width: SCREENWIDTH()/2, height: SCREENWIDTH()/2)
        cell.viewVideo.layer.addSublayer(self.avPlayerLayer!)
        NotificationCenter.default.addObserver(self, selector: #selector(self.playerItemDidReachEnd), name: NOTIFICATION_PLAYER_DID_END_PLAYING_VIDEO, object: self.avPlayer?.currentItem!)
        self.avPlayer?.play()

【问题讨论】:

  • 上述问题你有什么问题?
  • 您现在面临的问题是什么?
  • 可见的单元格,并且都有视频,所有这些单元格都会播放,即使我向下滚动视频也不会停止。
  • 你在哪个班级有这段代码
  • @downvoters,如果您认为这是一个无关紧要或容易问的问题,您可以表现出一些幸福并回答而不是投反对票。

标签: ios iphone swift uicollectionview avplayer


【解决方案1】:

将collectionview 可选代理添加到您的viewcontroller collectionView:didEndDisplayingCell:forItemAtIndexPath: 中,在此函数中您可以访问indexpath、cell 和collection view。然后您可以停止在单元格项目上播放视频。

斯威夫特

func collectionView(_ collectionView: UICollectionView,
                    didEndDisplaying cell: UICollectionViewCell,
                    forItemAt indexPath: IndexPath) {

}

目标-C

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多