如何在 UITableViewCell 上正确显示一个 AVPlayerViewController?

Posted

技术标签:

【中文标题】如何在 UITableViewCell 上正确显示一个 AVPlayerViewController?【英文标题】:How to correctly displayed on the UITableViewCell a AVPlayerViewController? 【发布时间】:2018-04-09 02:19:59 【问题描述】:

当我执行以下代码时,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】:

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

相反,您可以向视频播放器添加触摸手势并相应地添加播放暂停按钮。也许定制一点。 还要记住重复使用单元格,否则它们会弄乱您的视频播放。 您可能还想记住搜索栏的位置,以防您重复使用单元格。

【讨论】:

以上是关于如何在 UITableViewCell 上正确显示一个 AVPlayerViewController?的主要内容,如果未能解决你的问题,请参考以下文章

点击 UITableViewCell 时如何正确显示 UINavigationController?

iOS:在 UITableViewCell 中显示所需 UITextField 的正确方法

iPad上的UITableViewCell宽度不正确

UITableViewCell AccessoryView 未正确显示

自动布局 UITableViewCell

如何在 UITableViewCell 上显示数组数据?