使用Twitter等自动播放功能在UITableViewCell中嵌入来自网址的视频

时间:2016-02-03 19:52:12

标签: ios objective-c uitableview

正如我的问题所说,我想在Twitter等UITableViewCell中嵌入视频。没有声音的自动播放。

这是我在VideoCell.m中的setSelected方法

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
   [super setSelected:selected animated:animated];
   // Configure the view for the selected state
   NSURL *urlVideoFile = [NSURL URLWithString:self.urlVideo];
   NSAssert(urlVideoFile, @"Expected not nil video url");

   _playerViewController = [[AVPlayerViewController alloc] init];
   _playerViewController.player = [AVPlayer playerWithURL:urlVideoFile];
   _playerViewController.view.frame = self.viewVideo.bounds;
   _playerViewController.showsPlaybackControls = YES;

   [self.viewVideo addSubview:_playerViewController.view];
   self.viewVideo.autoresizesSubviews = YES;
   _playerViewController.player.play;
}

但显然不是最好的方法,因为加载视频非常缓慢,而且连续性,桌子的滚动不断被中断!

我想知道这是最好的做法!谢谢!

抱歉我的英文!

编辑:

我用dispatch_assync方法解决了de load问题,即阻止表滚动的问题。

我删除了setSelected中的代码并将其放在主视图控制器中的cellForRow中

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", [arrayVideos objectAtIndex:indexPath.row]]];

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

dispatch_async(queue, ^{

    cell.videoItem = [AVPlayerItem playerItemWithURL:url];

    dispatch_sync(dispatch_get_main_queue(), ^{

        cell.videoPlayer = [AVPlayer playerWithPlayerItem:cell.videoItem];
        cell.avLayer = [AVPlayerLayer playerLayerWithPlayer:cell.videoPlayer];
        cell.videoPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;
        cell.avLayer.frame = CGRectMake(cell.tapaVideo.frame.origin.x,
                                        cell.tapaVideo.frame.origin.y,
                                        cell.tapaVideo.frame.size.width,
                                        cell.tapaVideo.frame.size.height);

        [cell.contentView.layer addSublayer:cell.avLayer];
        //[cell.videoPlayer play];
        //[cell.contentView addSubview:cell.videoActivity];
    });
});

但我仍然有“重叠的问题”。

enter image description here

0 个答案:

没有答案