ios - AVPictureInPictureController - 自定义 PopOver 不显示

标签 ios swift avplayer avplayerlayer

我在AVPPlayer中使用了AVPictureInPictureController,并将其初始化为AVPlayerLayer。

- (id)initWithFrame:(CGRect)frame contentURL:(NSURL*)contentURL
{
    self = [super initWithFrame:frame];
    if (self) {

        AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:contentURL];
        self.moviePlayer = [AVPlayer playerWithPlayerItem:playerItem];
        playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.moviePlayer];

        if ([AVPictureInPictureController isPictureInPictureSupported])
        {
            self.avVPictureInPictureController = [[AVPictureInPictureController alloc] initWithPlayerLayer:playerLayer];
        }


        [playerLayer setFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];


        [self.moviePlayer seekToTime:kCMTimeZero];
        [self.layer addSublayer:playerLayer];


        self.contentURL = contentURL;

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerFinishedPlaying) name:AVPlayerItemDidPlayToEndTimeNotification object:playerItem];

        [self initializePlayer:frame];
    }
    return self;
}

现在当我尝试呈现 FPPopoverController (在 iPhone 和 iPad 上显示 PopOver 的自定义类)它不显示在屏幕上。

我使用下面的代码来呈现 FPPopOverController

//That's how I call

 self.audioSubtitlePopoverController.presentPopoverFromPoint(point)


//Definition of presentPopoverFromPoint  

-(void)presentPopoverFromPoint:(CGPoint)fromPoint
{
    self.origin = fromPoint;

    //NO BORDER
    if(self.border == NO)
    {
        _viewController.title = nil;
        _viewController.view.clipsToBounds = YES;
    }

    _contentView.relativeOrigin = [_parentView convertPoint:fromPoint toView:_contentView];

    [self.view removeFromSuperview];
    NSArray *windows = [UIApplication sharedApplication].windows;
    if(windows.count > 0)
    {
          _parentView=nil;
        _window = [windows objectAtIndex:0];
        //keep the first subview
        if(_window.subviews.count > 0)
        {
            _parentView = [_window.subviews lastObject];

            NSLog(@"%@ %@",_parentView,_viewController);
            [_parentView addSubview:self.view];
            [_viewController viewDidAppear:YES];
            [self.view bringSubviewToFront:_parentView];

        }

   }
    else
    {
        [self dismissPopoverAnimated:NO];
    }



    [self setupView];
    self.view.alpha = 0.0;
    [UIView animateWithDuration:0.2 animations:^{

        self.view.alpha = self.alpha;
    }];

    [[NSNotificationCenter defaultCenter] postNotificationName:@"FPNewPopoverPresented" object:self];

    //navigation controller bar fix
    if([_viewController isKindOfClass:[UINavigationController class]])
    {
        UINavigationController *nc = (UINavigationController*)_viewController;
        UINavigationBar *b = nc.navigationBar;
        CGRect bar_frame = b.frame;
        bar_frame.origin.y = 0;
        b.frame = bar_frame;
    }
}

即使从 View 中呈现也不起作用

self.audioSubtitlePopoverController.presentPopoverFromView(self.view)
// Definition of presentPopoverFromView
-(void)presentPopoverFromView:(UIView*)fromView
{
    SAFE_ARC_RELEASE(_fromView);
    _fromView = SAFE_ARC_RETAIN(fromView);
    [self presentPopoverFromPoint:[self originFromView:_fromView]];
}

任何人都可以帮忙。将不胜感激。

最佳答案

FPPopover 已弃用。

你应该使用 native Possibility显示弹出窗口或 WEPopover相反。

关于ios - AVPictureInPictureController - 自定义 PopOver 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39064154/

相关文章:

ios - AVPlayer 项目缓冲区为空

iphone - 使用 XCode 标记 SVN 主干/分支代码

ios - 设备旋转时 UITableViewHeader 不保持位置

swift - 检查 Swift 3 中是否在正确的调度队列中

iphone - 应用程序激活后恢复 AVPlayer 视频播放

iphone - 播放音频时 AVPlayer 在 StitchedStreamPlayer 示例中崩溃

ios - Swift - 性能明智 - 比较两个数组并获得每个数组的差异和两个数组的共同点

ios - React Native MapView 未在 iOS 独立构建上显示

ios - 发生了什么让我的键盘变成了一个酒吧

ios - 在 UIImageView 中加载图像并调整容器的大小 - swift