找到可见的UITableViewCell当用户滚动到它



我使用以下代码来查找我的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停止视频播放

最新更新