滚动时如何停止在 UICollectionViewCell 内的 YTPlayerView 中播放视频?
How to stop video playing in YTPlayerView inside UICollectionViewCell when scrolled?
我在 UICollectionView
(水平滚动)内使用 YTPlayerView
,屏幕上一次显示一个项目。我在自定义单元格中添加了一个 UIView
,并在身份检查器中将 class 名称更改为 YTPlayerView
。
对于 YTPlayerView
我启用了自动播放并且播放效果很好。但是,当我滚动到下一个或上一个项目时,我想停止播放器。我尝试通过使用 NSIndexPath
获取自定义单元格对象来停止 'didEndDisplayingCell' 中的播放器。但是 'didEndDisplayingCell' 中带有自定义单元格对象 returns(空)的 YTPlayerView
实例。所以我无法停止视频播放。如何在滚动到下一个/上一个项目时停止视频播放?
我有 3 个不同的自定义 UICollectionView
单元格来显示文本、图像和视频(YTPlayerView 或 AVPlayer)。
编辑
我试图通过保存以前的可见单元格索引路径来获取 'cellForItemAtIndexPath' 中的自定义视频单元格对象。而且我能够获取自定义单元格对象,但是当我尝试获取 YTPlayerView
的实例时,它正在为 YTPlayerView
.
返回新对象
任何人都可以建议我处理 UICollectionView
中的 YouTube 视频的正确方法。
好的,
现在我已经理解了这个问题,但是当我自己尝试时,我在 - (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 视频的单元格的 public 方法。
我在 UICollectionView
(水平滚动)内使用 YTPlayerView
,屏幕上一次显示一个项目。我在自定义单元格中添加了一个 UIView
,并在身份检查器中将 class 名称更改为 YTPlayerView
。
对于 YTPlayerView
我启用了自动播放并且播放效果很好。但是,当我滚动到下一个或上一个项目时,我想停止播放器。我尝试通过使用 NSIndexPath
获取自定义单元格对象来停止 'didEndDisplayingCell' 中的播放器。但是 'didEndDisplayingCell' 中带有自定义单元格对象 returns(空)的 YTPlayerView
实例。所以我无法停止视频播放。如何在滚动到下一个/上一个项目时停止视频播放?
我有 3 个不同的自定义 UICollectionView
单元格来显示文本、图像和视频(YTPlayerView 或 AVPlayer)。
编辑
我试图通过保存以前的可见单元格索引路径来获取 'cellForItemAtIndexPath' 中的自定义视频单元格对象。而且我能够获取自定义单元格对象,但是当我尝试获取 YTPlayerView
的实例时,它正在为 YTPlayerView
.
任何人都可以建议我处理 UICollectionView
中的 YouTube 视频的正确方法。
好的,
现在我已经理解了这个问题,但是当我自己尝试时,我在 - (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 视频的单元格的 public 方法。