2014-03-05 182 views
2

后,我在我的UIView创建MPMoviePlayerViewController破坏帧像这样(没有在我的UIViewController!):MPMoviePlayerViewController隐藏状态栏,看

self.playButton = [[UIButton alloc] initWithFrame:CGRectMake(100, 70, 125, 100)]; 
         [self.playButton setBackgroundImage:[UIImage imageNamed:@"video_play.png"] forState:UIControlStateNormal]; 
         [self.playButton addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside]; 


         self.playerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; 

self.playerViewController.moviePlayer.fullscreen = NO; 
self.playerViewController.view.frame = CGRectMake(0, 0, 320, 200); 

[self.playerViewController.moviePlayer prepareToPlay]; 
self.playerViewController.moviePlayer.shouldAutoplay = NO; 
self.playerViewController.view.backgroundColor = [UIColor yellowColor]; 
[self addSubview:self.playerViewController.view]; 
[self.playerViewController.view addSubview:self.playButton]; 

} 

- (void)buttonPressed:(id)sender{ 
(NSLog(@"Click")); 

[self.playerViewController.moviePlayer setFullscreen:YES animated:YES]; 
[self.playerViewController.moviePlayer play]; 
} 

正如你可以看到我添加了一个按钮上videoView,东阳这部分应该只是一个预览,当用户点击按钮时,MPMoviePlayerViewController应该动画到全屏并开始播放,当视频结束时,它应该返回到预览视图。一切正常,到目前为止,但我有两个问题:

第一个问题: 每次我打开查看我的状态栏被隐藏,它看起来像这样:

enter image description here

所以我把我的viewWillAppear中和我的UIViewController viewDidAppear:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

这工作,但现在的状态栏获取隐藏并立即再次出现,这看起来丑陋,有什么机会解决这个问题?

问题二:

当我在自定义按钮单击视频被全屏和一切工作正确的!但是当我按下视频的完成按钮时,一切都会回到预览屏幕,它看起来像这样:StatusBar被隐藏,导航栏也被打破,视频上方有很多黑色空间,这里有什么问题?

enter image description here

回答

2

好吧,我找到了一个解决这个问题,它的一点点哈克,但我发现没有其他解决办法。在我的ViewController我做的:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    float delay = 0.1; 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
    [UIApplication sharedApplication].statusBarHidden = NO; 
}); 

和的情况下用户点击后退按钮我做的:

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    [UIApplication sharedApplication].statusBarHidden = NO; 
} 
+0

我喜欢那种解决方案。他们完成这项工作,从用户的角度看起来很棒。代码不重要,如果它看起来不好。 –