avplayer全屏

时间:2013-01-20 12:59:48

标签: fullscreen avplayer avasset

我有一个AVAlayer与AVAsset一起使用来播放视频。

我添加了一些控件,如播放,停止,转发等......

但是如何使用按钮切换到全屏?我不想使用MPMoviePlayerController,因为我不知道如何同步starttime。但是,我怎样才能简单地“扩展”当前的playerView以使用fullScreen?

感谢。

3 个答案:

答案 0 :(得分:3)

  1. 如果AvPlayer与视图或窗口具有相同的框架

    • 要使AVPlayer成为全屏,您必须将窗口的总帧数提供给AVPlayer图层,而不是通过pi / 2旋转视图。
  2. 如果AvPlayer拥有较少的视图或窗口

    • 当用户按下横向按钮时,在protocal上创建父级以将玩家框架更改为窗口框架

    • 通过pi / 2旋转视图。

  3. 创建一个方法并使用下面的代码。

    -(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);
        }
    }
    

答案 1 :(得分: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)

答案 2 :(得分:1)

我有同样的问题。我在代码中添加了以下行,

 [playerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

现在会全屏显示。