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

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

提问人:Wasim Makwana 提问时间:12/29/2017 最后编辑:CommunityWasim Makwana 更新时间:1/4/2018 访问量:972

问:

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

ios objective-c cocos2d-iphone 开发环境

评论


答:

1赞 Abhijit 12/29/2017 #1

您可以通过在主键窗口上添加自定义视图,在 AVPLayerViewController 的中心添加自定义指标视图。

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

您可以设置自定义指标视图的中心,如下所示。

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

评论

0赞 Wasim Makwana 12/29/2017
当 AVplayerviewController 处于全屏模式时,我希望 AVplayerviewController 中心有 Brother 的指示器
0赞 Abhijit 1/1/2018
还行。你能分享屏幕截图,以便我找出你想要的方式吗?
0赞 Wasim Makwana 1/2/2018
好的,兄弟,我已经添加了sc,你能参考一下吗
0赞 Abhijit 1/2/2018
感谢您的屏幕截图。您的构建目标似乎低于 iOS 8。你能粘贴你的代码来播放这个视频吗?另外,您能否告诉您正在哪个版本的iOS上播放此视频?
0赞 Wasim Makwana 1/3/2018
我在IOS 10中运行视频。当屏幕处于全屏模式时,我只想在全屏中央显示活动指示器。提前致谢。
0赞 Som Nai 1/4/2018 #2

当用户按下播放按钮时添加此代码

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];
}

不要忘记添加以下方法

-(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;    
        }
     }
}

并且不要忘记在缓冲时开始动画。单击此处此链接检查 AVPlayer 是否正在缓冲

评论

0赞 Som Nai 1/4/2018
wel come @Wasim Makwana