AVPlayer в полноэкранном режиме без черных полос сверху и снизу

Я встроил свое видео и добавил наблюдателя из центра уведомлений, как показано ниже:

 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"export" ofType:@"mp4"];
NSURL *videoURL = [NSURL fileURLWithPath:filePath];

_playerViewController = [[AVPlayerViewController alloc] init];
// grab a local URL to our video
//NSURL *videoURL = [myBundle URLForResource:@"export" withExtension:@"mp4"];
NSLog(@"Video URL: %@",videoURL);
if(videoURL)
{

    _playerViewController.showsPlaybackControls = NO;

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:videoURL];

    // create an AVPlayer
    _playerViewController.player = [AVPlayer playerWithPlayerItem:playerItem];
   //self.player.volume = PLAYER_VOLUME;
   _playerViewController.modalPresentationStyle = 
   UIModalPresentationOverFullScreen;
   AVPlayerLayer *playerLayer = [AVPlayerLayer 
     playerLayerWithPlayer:_playerViewController.player];
   playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    playerLayer.zPosition = -1;
   playerLayer.frame = [UIApplication sharedApplication].keyWindow.bounds;
   [self.playerView.layer addSublayer:playerLayer];

   [_playerViewController.player play];
   // Adding Observer for your video file,
  NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
  [notificationCenter addObserver:self selector:@selector(videoDidFinish:) 
  name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
}

По окончании воспроизведения видео вызывается следующий метод:

 -(void)videoDidFinish:(id)notification{
     AVPlayerItem *p = [notification object];
     //do something with player if you want
     [_playerViewController.player pause];

     //Remove Observer
     [[NSNotificationCenter defaultCenter] removeObserver:self];

      //your initial view can proceed from here
     UIViewController *controler = [self.storyboard 
    instantiateViewControllerWithIdentifier:@"loginScreenId"];
   [self.navigationController pushViewController:controler animated:YES];
}

Я не могу исправить две вещи:

  1. Я нажимаю от текущего контроллера представления AV к следующему контроллеру представления. Он успешно перешел к следующему контроллеру представления, но на экране есть верхняя и нижняя черные полосы. Как я могу избавиться от этого?
  2. Как я могу сделать AVPlayer полноэкранным?

person Dinesh M    schedule 19.04.2017    source источник


Ответы (2)


Наконец, я понял это. Я просто добавил Launch.storyborad в проект и заменил код

playerLayer.frame = [UIApplication sharedApplication].keyWindow.bounds;

с

playerLayer.frame = self.view.frame;

чтобы получить полноэкранное видео.

person Dinesh M    schedule 20.04.2017

используйте Player.frame = self.view.bounds для полноэкранного режима

person avish manocha    schedule 21.04.2017