I am playing a video in a UITableViewCell . For this, I use the following code:
- (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; }
The video plays correctly, but I want to play only one video at a time. Play the video of the fully visible cell.
source share