Odtwarzam wideo w wersji UITableViewCell
. Do tego używam następującego kodu:Jak odtwarzać wideo (autoodtwarzanie) na UITableViewCell w iOS
- (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;
}
Film jest odtwarzany poprawnie, ale chcę odtwarzać tylko jeden film na raz. Odtwórz wideo z komórki, która jest w pełni widoczna.
Nie chcę robić w przypadku kliknięcia, chcę automatycznie odtwarzać wideo, gdy komórka jest widoczna. – San007
Więc jeśli chcesz grać w ten sposób, nie powinieneś pisać swojego kodu w cellforrowindindexpath i pisać go w viewWillAppear i wziąć pętlę for array i odtworzyć ją z indeksu tablicy. Uzyskaj pełny czas utworu i po jego zakończeniu załaduj następną piosenkę z tej tablicy. Używaj tabeli tylko do celów wyświetlania z pewną logiką, w którą grasz. – user2826529
Nie dostaniesz mojego problemu, dziękuję za wysiłek. – San007