iOS cell离开当前屏幕的判断方法
有时候视频播放器有种需求就是在列表中,用户滑动table,直到某个cell不可见时,当前cell播放的视频应该自动暂停!比如腾讯新闻的视频模块就是这样的体验。
如何判断呢?我首先是记录当前点击cell的索引IndexPath,然后根据cell的高度、Y坐标与table的内容偏移位置结合来判断cell是否离开了屏幕。
- (void)scrollViewDidScroll:(UIScrollView*)scrollView{
NSIndexPath*optionIndexPath = [ZDOverallDataManagershareInstance].indexPath;
if(!optionIndexPath) {
return;
}
ZDFinancialVideoCell*optionCell = [self.baseTableViewcellForRowAtIndexPath:optionIndexPath];
BOOL isVisible =YES;
CGRectcellR = [self.baseTableViewrectForRowAtIndexPath:optionIndexPath];
if((self.baseTableView.contentOffset.y- (cellR.origin.y))> cellR.size.height) {
isVisible =NO;
}
if (cellR.origin.y - self.baseTableView.contentOffset.y > self.baseTableView.frame.size.height) {//下滑的情况
isVisible =NO;
}
if(!isVisible&&[optionCellisKindOfClass:[ZDFinancialVideoCellclass]]) {//已经不可见了
ZDLog(@"该暂停了!!!");
if(!optionCell.model.isPlaying) {
return;
}
[optionCellpause];
}
}