iOS 7(子图层)AVPlayer全屏动画并需要上面(封面)UINavigationBar

时间:2015-06-03 15:40:14

标签: ios fullscreen avplayer avplayerlayer

我试图放弃MPMoviePlayerController并切换到AVPlayer但面临'AVPlayer(图层)全屏动画'的问题。

项目源代码:http://www.kevin-and-idea.com/avplayer.zip

目标:目前,AVPlayer(图层)是ViewController上元素的一部分。该游戏需要能够在“小”和全屏之间切换,当它全屏时,它需要在(覆盖)雕像栏和导航栏之上。此外,播放器需要可旋转,具体取决于设备方向

问题:不知道如何'取出'AVPlayerLayer并'覆盖'整个屏幕,包括雕像条和&导航栏。

目前:我将UINavigationBar隐藏和状态栏隐藏到存档,但这不是目标,并且无需轮播

非常感谢!!!

P.S。单击信息图标以切换到全屏 https://c1.staticflickr.com/1/388/18237765479_7d3c292449_z.jpg

代码

- (IBAction)goFullScreen:(id)sender {

[UIView animateWithDuration:0.25
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseOut
                 animations:^{
                     if (topSpaceConstraints.priority == 999) {
                         videoContainerSizeRatioConstraints.priority = 250;
                         [[UIApplication sharedApplication] setStatusBarHidden:YES];
                         [self.navigationController setNavigationBarHidden:YES];
                         topSpaceConstraints.priority = 250;
                     } else {
                         videoContainerSizeRatioConstraints.priority = 999;
                         [[UIApplication sharedApplication] setStatusBarHidden:NO];
                         [self.navigationController setNavigationBarHidden:NO];
                         topSpaceConstraints.priority = 999;
                     }
                     [self.view layoutIfNeeded];

                 }
                 completion:nil];

}

1 个答案:

答案 0 :(得分:1)

您有两种选择(可能更多): 您创建的视图层次结构中的视图比导航控制器视图更高,因此您可以放置​​“高于”的视图。可能这将是最具视觉吸引力的一个,我相信大多数专业应用程序都会使用它。

另一个选项是当有人按下全屏按钮时隐藏导航栏。

<强>更新

对于选项1可能是一种“更好”的方式:

我看了上一篇。我的项目,也许你想用这个:

创建一个新窗口以包含您的avplayer。

UIView子类并实现一个'show'方法,如下所示:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.alpha = 0;
self.window.windowLevel = UIWindowLevelAlert;
self.window.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.0f];

[self.window addSubview:self];

[self.window addSubview:self];
[self.window makeKeyAndVisible];

[UIView animateKeyframesWithDuration:0.3 delay:0 options:UIViewKeyframeAnimationOptionBeginFromCurrentState animations:^{

        [UIView addKeyframeWithRelativeStartTime:0. relativeDuration:0.7 animations:^{
            // PROBABLY MORE ANIMATION HERE...
            self.alpha = 1;
        }];

        [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:1 animations:^{
            self.window.backgroundColor = [UIColor colorWithWhite:0.0f alpha:self.targetDimmDensity];

        }];
    } completion:^(BOOL finished) {

    }];

self.window是我创建的新@property (nonatomic, strong) UIWindow *window;