2014-03-05 227 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

我喜歡那種解決方案。他們完成這項工作,從用戶的角度看起來很棒。代碼不重要,如果它看起來不好。 –