如何在iOS中的UITableViewCell中播放video(自动播放)

我在UITableViewCell播放video。 为此,我使用下面的代码:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *VideoCellIdentifier = @"VideoCell"; NSDictionary *_response_data = [self.response objectAtIndex:indexPath.row]; VideoCustomCell *cell = (VideoCustomCell *) [tableView dequeueReusableCellWithIdentifier:VideoCellIdentifier]; if (cell == nil) { NSArray *topLevelObjects; topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"VideoCustomCell" owner:self options:nil]; for (id currentObject in topLevelObjects){ if ([currentObject isKindOfClass:[UITableViewCell class]]){ cell = (VideoCustomCell *) currentObject; cell.delegate = self; break; } } } avPlayer = [[AVPlayer playerWithURL:[NSURL URLWithString:[_response_data valueForKey:@"media_id"]]] retain]; avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer]; avPlayerLayer.frame = cell.video_player_view.layer.bounds; avPlayerLayer.videoGravity = AVLayerVideoGravityResize; [cell.video_player_view.layer addSublayer: avPlayerLayer]; [avPlayer play]; return cell; } 

video播放正常,但我一次只能播放一个video。 播放完全可见的单元格的video。

使用这两种方法滚动和处理播放video。 当tableview停止滚动时,这两个方法将以任何一种方式调用

 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { if(![scrollView isDecelerating] && ![scrollView isDragging]){ [self playVideo]; } } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ if(!decelerate){ [self playVideo]; } } -(void)playVideo { if(aryTableData.count==0){ return; } for(UITableViewCell *cell in [tblView visibleCells]) { VideoCell *ccell = (VideoCell*)cell; CGRect ccellRect = [APP_DEL.window convertRect:ccell.bounds fromView:ccell]; // NSLog(@"--Cell frame %f",ccellRect.origin.y); //Set Condition of cell visible within some range if(ccellRect.origin.y>-200) { // Handle Video Play int row = [[tblView indexPathForCell:ccell] row]; NSString *strUrl = [[aryTableData objectAtIndex:row] valueForKey:@"video_url"] ; [ccell startVideoFromURL:strUrl]; //You can handle video play in cell or table view } } } 

你应该在didselect方法中编写你的游戏代码,所以你select它只会玩别的游戏。

 (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // your player code }