我使用以下代码来查找我的tableview中可见的单元格。每次用户滚动时,只有一个UITableViewCell对用户可见,但下面的代码返回两个可见行,因为这就是当用户滚动到一个单元格时UITableView的工作方式。
NSArray *visibleCells = [self.tableView indexPathsForVisibleRows];
for (NSIndexPath *cellIndexPath in visibleCells)
{
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:cellIndexPath];
if ([cell isKindOfClass:[C8SubmittedContentTableViewCell class]]) {
[submittedContentTableViewCell play];
}
}
我在
处运行上面的代码- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
但是正如我提到的UITableView返回两个可见单元格。我怎么知道哪一个是真正可见的用户?因为如果我有两个或三个视频在一排,我需要开始只播放一个真正可见的用户,同时停止播放前一个。
任何想法或帮助感谢!
这是一种可能的方法:
CGRect cellRect = [self.tableView rectForRowAtIndexPath:cellIndexPath];
CGRect visibleRect;
visibleRect.origin = self.tableView.contentOffset;
visibleRect.size = self.tableView.bounds.size;
BOOL isCellVisible = CGRectContainsRect(visibleRect, cellRect);
你的布局不清楚,所以可能需要CGRectIntersectsRect
,甚至手动rect到rect匹配(说,如果单元格rect总是比表剪辑区域大,重叠的百分比应该使用)。
使用代理的willDisplayCell
启动视频播放,didEndDisplayingCell
停止视频播放