简体   繁体   English

在 AVPLayerViewController 中添加活动指示器? (注意:当视频处于全屏模式时)

[英]Add activity indicator in AVPLayerViewController ? (Note: When video is in fullscreen mode)

在此处输入图像描述如何在全屏模式下在 AVPLayerViewController 的中心添加活动指示器?

You can add your custom indicator view in centre of AVPLayerViewController by adding custom view on main key window.您可以通过在主键窗口上添加自定义视图,在 AVPLayerViewController 的中心添加自定义指示器视图。

UIApplication.shared.keyWindow?.addSubview(your custom indicator view)

You can set centre of your custom indicator view as below.您可以如下设置自定义指标视图的中心。

activity.center = CGPoint.init(x: UIScreen.main.bounds.size.width/2.0, y: UIScreen.main.bounds.height/2.0)

add this code when user press play button当用户按下播放按钮时添加此代码

if(playerViewController.view.subviews.count != 0)
{
  UIView *AVTouchIgnoringView = playerViewController.view.subviews[0].subviews.lastObject;
  activityIndicatorBuffer.center = playerViewController.view.center;
  [AVTouchIgnoringView addSubview:activityIndicatorView];
  [AVTouchIgnoringView bringSubviewToFront:activityIndicatorView];
}

and Don't forget to add below methods并且不要忘记添加以下方法

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [playerViewController addObserver:self forKeyPath:@"videoBounds" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
}
-(void)viewDidDisappear:(BOOL)animated
{
     [super viewDidDisappear:animated];
     [playerViewController removeObserver:self forKeyPath:@"videoBounds"];
}
-(void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary )change context:(void *)context
{
     if ([keyPath isEqualToString:@"videoBounds"])
     {
        float height = playerViewController.contentOverlayView.bounds.size.height;
        float width = playerViewController.contentOverlayView.bounds.size.width;
        if (height == SCREEN_HEIGHT && width == SCREEN_WIDTH)
        {
            activityIndicatorBuffer.center = playerViewController.contentOverlayView.center;
        }
        else
        {
            activityIndicatorBuffer.center = playerViewController.view.center;    
        }
     }
}

and don't forget to start animating when buffering.并且不要忘记在缓冲时开始动画。 click here this link for check AVPlayer is buffering单击此处此链接检查 AVPlayer 是否正在缓冲

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM