【问题标题】:How to stop video playing in YTPlayerView inside UICollectionViewCell when scrolled?滚动时如何在 UICollectionViewCell 内的 YTPlayerView 中停止视频播放?
【发布时间】:2016-09-13 08:01:13
【问题描述】:

我在UICollectionView(水平滚动)中使用YTPlayerView,屏幕上一次可见一个项目。我在自定义单元格中添加了一个UIView,并在身份检查器中将类名更改为YTPlayerView

对于YTPlayerView,我启用了自动播放,并且播放良好。但是,当我滚动到下一个或上一个项目时,我想停止播放器。我尝试通过使用NSIndexPath 获取自定义单元格对象来停止“didEndDisplayingCell”中的播放器。但是具有自定义单元格对象的YTPlayerView 实例在“didEndDisplayingCell”中返回(null)。所以我无法停止视频播放。滚动到下一个/上一个项目时如何停止视频播放?

我有 3 个不同的自定义 UICollectionView 单元格来显示文本、图像和视频(YTPlayerView 或 AVPlayer)。

编辑 我试图通过保存以前的可见单元格索引路径来获取“cellForItemAtIndexPath”中的自定义视频单元格对象。而且我能够获取自定义单元格对象,但是当我尝试获取YTPlayerView 的实例时,它正在返回YTPlayerView 的新对象。

谁能建议我在UICollectionView 中处理 youtube 视频的正确方法。

【问题讨论】:

  • 在你的UICollectionViewCell,在prepareForReuse,你能阻止播放器吗?
  • 你有自定义的UICollectionViewCell 类吗?如果是,您可以覆盖prepareForReuse
  • prepareForReuse 没有被调用,因为我有 3 个不同的单元格 1)图像 2)文本 3)Youtube 视频。你能建议任何其他选择吗@Larme
  • 如果您将 YouTube 视频单元格子类化,prepareForReuse 将会被调用
  • 是的,如果我连续有 Youtube 视频(自定义视频单元格)没有任何文本或图像单元格,prepareForReuse 会被调用。 YTPlayerView 如果下一个/上一个单元格也显示 youtube 视频,则自动停止上一个视频,否则它不会停止播放。 @Lefteris

标签: ios objective-c youtube-api ytplayerview


【解决方案1】:

好的,

现在我已经理解了这个问题,但是当我尝试自己时,我在 - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath 委托中得到了一个完全有效的单元格引用。

那里不应该为空。每次单元格消失时您都应该得到这个,您应该检查隐藏单元格的类型!

如果单元格是您的 YouTube 单元格的类型,则仅停止视频播放。 这是一个粗略的示例:

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {
    if ([cell isKindOfClass:[YouTubeVideoCell class]]) {
        YouTubeVideoCell *youtubeCell = (YouTubeVideoCell*)cell;
        [youtubeCell stopVideo];
    }
}

YouTubeVideoCell 应该是您的自定义 YTPlayerView 单元子类,stopVideo 应该是单元的公共方法,您可以在其中停止 YTPlayerView 视频。

【讨论】:

  • 而不是 [cell stopVideo] ,我通过 [cell.youTubePlayerView pauseVideo] 停止了视频。 youTubePlayerView 是自定义单元格中播放器视图的一个实例。 @Lefteris
  • 双向工作。如果您要在单元格中公开 YTPlayerView,那很好!
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2017-08-28
  • 2016-03-18
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 2015-11-13
相关资源
最近更新 更多