gpt4 book ai didi

ios - 滚动时如何停止在 UICollectionViewCell 内的 YTPlayerView 中播放视频?

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:25 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

好的,

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

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

如果该单元格是您的 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 视频的单元格的公共(public)方法。

关于ios - 滚动时如何停止在 UICollectionViewCell 内的 YTPlayerView 中播放视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37272405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com