AVPlayer全屏显示

3

我有一个AVPlayer用来播放视频。

我添加了一些控件如播放、停止、前进等等...

但是我该如何使用一个按钮切换到全屏模式呢?我不想使用MPMoviePlayerController因为我不知道如何同步开始时间。但是我该如何简单地“扩展”当前playerView以使用全屏模式?

谢谢。


你能解决这个问题吗?如果当前视图不是全屏状态,下面的答案将无效。 - nhenrique
3个回答

3
  1. 如果AvPlayer和视图或窗口的框架相同

    • 要使AVPlayer全屏,您必须将窗口的总框架提供给AVPlayer层,然后将视图旋转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);
    }
}

2
假设您有一个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)

1

我也遇到了同样的问题。我在我的代码中添加了以下几行:

 [playerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

现在将全屏显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接