如何在UITableViewCell上正确显示AVPlayerViewController?

时间:2018-04-09 02:20:00

标签: ios uitableview avplayer avplayerviewcontroller

当我执行以下代码时,AVPlayerViewController将显示在单元格上,但当我再次单击播放器时,将执行tableView:(UITableView *)tableView didSelectRowAtIndexPath方法。我想要的是播放视频时,单击在播放器上,将显示或隐藏控件而不是执行tableView:(UITableView *)tableView didSelectRowAtIndexPath

-(void)showVideoInView:(UIView *)view URL:(NSURL *)url {
if (!url || !view) {
    return;
}

CGRect frame = CGRectIntegral(view.bounds);

UIViewController *video;

if (@available(iOS 8.0,*)) {
    AVPlayerViewController * videoController = [[AVPlayerViewController alloc]init];
    videoController.view.frame = frame;
    videoController.player = [AVPlayer playerWithURL:url];
    if (@available(iOS 10.0,*)) {
        videoController.player.automaticallyWaitsToMinimizeStalling = NO;
    }
    [videoController.player play];
    video = videoController;
}else {
    MPMoviePlayerViewController *videoController = [[MPMoviePlayerViewController alloc]initWithContentURL:url];
    videoController.view.frame = frame;
    [[videoController moviePlayer] play];
    video = videoController;
}
   [view addSubview:video.view];
}

1 个答案:

答案 0 :(得分:0)

据我所知,AVPlayers在没有全屏时不会显示视频控件。您可以参考this

相反,您可以向视频播放器添加触摸手势,并相应地添加播放暂停按钮。也许定制一下。 还记得重复使用其他单元格,它们会让你的视频播放混乱。 如果您重复使用单元格,您可能还需要记住搜索栏位置。