2016-08-21 51 views
0

我已經在AVPPlayer中使用AVPictureInPictureController並將其初始化爲AVPlayerLayer。AVPictureInPictureController - 自定義PopOver不顯示

- (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 PopOvers)它不會顯示在屏幕上。

我用下面的代碼來呈現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; 
    } 
} 

即使目前從視圖不會太

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

工作,任何人都可以請協助。將感激不盡。

+0

您能否發表更多的代碼?上下文不是很容易理解。 – Maurice

+0

@MauriceA。添加了所有代碼。 –

回答

1

FPPopover已棄用。

您應該使用native Possibility來代替Popovers或WEPopover

+0

我想使用兼容iPhone和iPad的PopOver。 WePopover不適用於iPhone。 「WEPopover是嘗試創建UIPopoverController的一個通用版本,不幸的是它僅適用於iPad」 –