2010-10-18 68 views
0

我有一个UIViewController的视图是一个嵌入式电影的UIWebView。当电影正在全屏播放,并且设备被旋转时,在电影被解散之后,标题栏结束在状态栏后面。为何会发生这种情况?为什么旋转后标题栏出现在状态栏后面?

alt text

+0

我有完全相同的问题。你解决了吗?谢谢。 – nonamelive 2012-06-06 03:21:12

回答

0

没有你autoresizingMask上的UIWebView

webView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | 
             UIViewAutoresizingFlexibleWidth); 

-(BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) orientation 
{ 
    return YES; 
} 
+0

是的。状态栏后面的视图是UINavigationController的视图。它由UINavigationController代码自动加载。另外,当电影不播放时旋转设备时不会发生。当设备处于“不良”状态时旋转设备,它会自行纠正。 – richcollins 2010-10-18 22:43:57

1

原来,当视频开始视图控制器的视图的动画没有完成。这导致它通过视频播放器视图重新显示。

+0

你是如何修复它的?我有完全相同的问题....谢谢! :) – Sid 2011-03-04 19:09:34

+0

动画完成后开始播放视频 – richcollins 2011-03-13 08:20:09

1

我的解决办法:

(void)viewDidLoad 
{ 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO]; 
    [UIApplication sharedApplication].keyWindow.frame=CGRectMake(0, 20, 320, 460); 
    self.navigationController.navigationBar.hidden=NO; 
} 
0

这是没有办法解决使用MPMoviePlayerNotification这个问题,因为UIWebView的视频,请不要使用MPMoviePlayerViewController或者它是私有的开发商。 但是,还有另一种方法来解决这个错误。

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(handleStatusBarFrameDidChange) 
              name:UIApplicationDidChangeStatusBarFrameNotification 
              object:nil]; 

- (void)handleStatusBarFrameDidChange { 
    self.navigationController.navigationBarHidden = YES; 
    self.navigationController.navigationBarHidden = NO; 
}  
相关问题