如何使用 UICollectionview 播放 Facebook 风格的视频
Posted
技术标签:
【中文标题】如何使用 UICollectionview 播放 Facebook 风格的视频【英文标题】:How to play Facebook style video using UICollectionview 【发布时间】:2016-08-11 05:51:47 【问题描述】:我正在尝试使用 ZOWVideoPlayer 在UICollectionview
Cell 中播放视频。视频播放完美,但目前我的 collectionview 正在播放所有可见视频。我只想播放一个完全可见的视频。这意味着当前视频未被滚动过程裁剪(像素不在屏幕外,而是完全可见)。
我还在 scrollview 委托方法中添加了代码来检查完整的可见单元格,但是我的 collectionview 卡住了 1 或 2 秒然后移动,所以请帮助我出去。
请先阅读问题,然后投反对票。
这是检查可见单元格的代码
- (void)checkVisibilityOfCell:(CustomCell *)cell inScrollView:(UIScrollView *)aScrollView
@try
CGRect cellRect = [aScrollView convertRect:cell.frame toView:aScrollView.superview];
if (cell.videoPlayer)
if (CGRectContainsRect(aScrollView.frame, cellRect))
//Play Video
else
//Pause Video
@catch (NSException *exception)
@finally
【问题讨论】:
请添加可见单元格的代码检查以澄清您的问题。 我更新问题请查看 只是路人的建议...@Hardik,(1)请添加编码语言标签。是Swift
(或Obj-C
)吗?知道答案的人甚至可能不会看您当前指定的标签,但我们都会检查我们的编码语言,对吗?.. (2) 究竟什么是“Facebook 风格的视频”?改进所需的描述(我确定您需要在集中到屏幕时播放视频,或者至少在滚动位置没有“裁剪”任何像素时播放,否则它应该自动暂停。这是一个好的猜测吗?)。你是如何查看位置的?
@Hardik,我试图修复。纠正任何错误。祝你好运。
【参考方案1】:
我怀疑您的方法被多次调用。因为您只检查玩家的存在。为什么不为玩家状态添加另一个检查?因此,如果玩家正在玩,请忽略它。
if (CGRectContainsRect(aScrollView.frame, cellRect) && !isPlaying)
isPlaying -> 可以添加用于存储播放器当前状态的枚举
希望这是有道理的;)
【讨论】:
我认为这与滚动期间屏幕上的视频位置有关。看看新的问题编辑是否有帮助... @VC.One 绝对是由于职位。只要视频在屏幕上完全可见,就会调用委托方法。所以如果我们确保播放器只调用一次“play”方法,我们就不会面临延迟。我怀疑延迟的主要原因是该剧被多次调用。 我不使用 Swift / Obj-C(因为 Asker 标记了video
)。当微妙的滚动现在使其仅部分可见时,视频会自动暂停吗?新“最明显”单元格中的下一个视频现在将自动播放?如果这是真的,你有一个潜在的正确答案。但这是让 Asker 确认...以上是关于如何使用 UICollectionview 播放 Facebook 风格的视频的主要内容,如果未能解决你的问题,请参考以下文章
停止在 UITableView 的嵌套 UICollectionView 中播放视频或仅在嵌套结构中的可见单元格上播放
如何将视频从 ALAsset 显示到 UICollectionview Cell
我们如何使用 tapGesture 在 Tvos 中播放视频
Swift 中未调用 UICollectionView DidDeselectItemAtIndexPath 方法