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];

    }

}

推荐阅读更多精彩内容