当 MPMoviePlayerController 退出全屏时 UINavigationBar 错位(ios 8 问题)

Posted

技术标签:

【中文标题】当 MPMoviePlayerController 退出全屏时 UINavigationBar 错位(ios 8 问题)【英文标题】:UINavigationBar missplaced when MPMoviePlayerController exits fullscreen (ios 8 issue) 【发布时间】:2015-09-12 12:54:48 【问题描述】:

在我的应用程序中,我使用 MPMoviePlayerController 流式传输视频。播放器进入全屏之前和播放器退出全屏之后的视图导航栏图像如下所示。

全屏之前

全屏后

导航栏向上移动了 20 像素。尝试了很多方法,例如设置框架隐藏和取消隐藏框架等。但没有用。

我该如何纠正这个问题? 1. 我可以使用 uibarpositioningdelegate 来纠正这个问题吗?如果可以,如何?

请帮忙,谢谢。

【问题讨论】:

你能告诉我你在设计视图时使用了自动布局或自动调整大小吗? 我使用自动布局并根据要求动态设置某些视图的高度 【参考方案1】:

试试这个...

进入全屏时隐藏导航栏,取消隐藏时再次显示...

-(void)viewDidLoad 

     [super viewDidLoad];     

     [[NSNotificationCenter defaultCenter] addObserver:self
     selector:@selector(mPExitFullScreen) 
    name:MPMoviePlayerWillExitFullscreenNotification 
    object:nil];

     [[NSNotificationCenter defaultCenter] addObserver:self    selector:@selector(mPEnterFullScreen) name:MPMoviePlayerDidEnterFullscreenNotification object:nil];



- (void) mPExitFullScreen
    [self.navigationController setNavigationBarHidden:NO animated:NO];


- (void)mPEnterFullScreen 
    [self.navigationController setNavigationBarHidden:YES animated:YES];

【讨论】:

它帮助了 50% ..实际上我之前尝试过这个问题是每次电影播放器​​退出全屏时主屏幕视图都会向上移动 20 像素。在 viewDidAppear 中重置视图做了技巧。[self.view setFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height)];

以上是关于当 MPMoviePlayerController 退出全屏时 UINavigationBar 错位(ios 8 问题)的主要内容,如果未能解决你的问题,请参考以下文章

当用户尝试全屏播放时,MPMoviePlayerController 停止并重置电影 [iOS]

当 MPMovieControlStyle = MPMovieControlStyleNone 时如何触摸/单击 MPMoviePlayerController 视图

当 MPMoviePlayerController 退出全屏时 UINavigationBar 错位(ios 8 问题)

iphone:在 mpMoviePlayerController 顶部保留视图

IOS 6 MPMoviePlayerController 旋转问题

UIWebView 和 MPMoviePlayerController