полноэкранный режим

У меня есть AVPlayer, используемый с AVAsset для воспроизведения видео.

Я добавил некоторые элементы управления, такие как воспроизведение, остановка, вперед и т. Д.

Но как я могу переключиться в полноэкранный режим с помощью кнопки? Я не хочу использовать MPMoviePlayerController, потому что не знаю, как синхронизировать время запуска. Но как я могу просто «расширить» текущий playerView, чтобы использовать полноэкранный режим?

Спасибо.


person Andrea    schedule 20.01.2013    source источник
comment
Вы смогли решить это? ответы ниже не работают, если текущий вид еще не полноэкранный   -  person nhenrique    schedule 24.10.2015


Ответы (3)


  1. Если AvPlayer имеет ту же рамку, что и вид или окно

    • To make AVPlayer as full screen you have to give total frame of window to AVPlayer layer than rotate a view by pi/2 .
  2. Если AvPlayer имеет меньшую рамку обзора или окно

    • Создать в протоколе для родителя, чтобы изменить рамку игрока на рамку окна, когда пользователь нажимает кнопку альбомной ориентации

    • Повернуть вид на pi/2.

создайте один метод и используйте приведенный ниже код.

-(void)enlarge
{
    if(!_isLandscapeMode)
    {
        [self.landscapeDelegate changeFrameForLandscapeMode:YES];
        [_landscapeMode setImage:[UIImage imageNamed:IMAGE_NAME_PORTRAIT_MODE] forState:UIControlStateNormal];
        _isLandscapeMode=YES;

        self.transform =  CGAffineTransformMakeRotation(M_PI_2);
    }
    else
    {
        [self.landscapeDelegate changeFrameForLandscapeMode:NO];
        _isLandscapeMode=NO;
        [_landscapeMode setImage:[UIImage imageNamed:IMAGE_NAME_LANDSCAPE_MODE] forState:UIControlStateNormal];
        self.transform =  CGAffineTransformMakeRotation(0);
    }
}
person Kumar Swamy    schedule 12.05.2016

Допустим, у вас есть UIViewController с полноэкранным режимом UIView.

Вам нужно использовать AVPlayerLayer

var player = AVPlayer(playerItem: AVPlayerItem(asset: asset))
var layer = AVPlayerLayer(player: player)
self.view.layer.addSublayer(layer)
layer.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)
person Andrius Steponavičius    schedule 22.03.2015

Я была такая же проблема. Я добавил следующие строки в свой код,

 [playerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

Теперь он будет отображаться на весь экран.

person Forte Zhu    schedule 09.11.2016