有時(shí)候視頻播放器有種需求就是在列表中俊柔,用戶(hù)滑動(dòng)table筹麸,直到某個(gè)cell不可見(jiàn)時(shí),當(dāng)前cell播放的視頻應(yīng)該自動(dòng)暫停雏婶!比如騰訊新聞的視頻模塊就是這樣的體驗(yàn)物赶。
如何判斷呢?我首先是記錄當(dāng)前點(diǎn)擊cell的索引IndexPath尚骄,然后根據(jù)cell的高度块差、Y坐標(biāo)與table的內(nèi)容偏移位置結(jié)合來(lái)判斷cell是否離開(kāi)了屏幕侵续。
- (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]]) {//已經(jīng)不可見(jiàn)了
? ? ? ? ZDLog(@"該暫停了>笳伞:┤颉!");
? ? ? ? if(!optionCell.model.isPlaying) {
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? [optionCellpause];
? ? }
}