2010-09-15 21 views
14

मेरे पास एक आईपैड एप्लिकेशन है जो MPMoviePlayerViewController के साथ एक वीडियो बनाता है और दिखाता है। यहाँ मेरी कोड है:MPMoviePlayerViewController स्टेटस बार छुपाएं

MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:URLEncode(uri)]]; 
[mpvc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
[mpvc setWantsFullScreenLayout:YES]; 
[<MainViewController> presentModalViewController:mpvc animated:YES]; 

मूवी लोड/प्लेबैक काम करता है ठीक, तथापि, जब फिल्म नियंत्रक दिखाई देता है, यह ऊपर स्थिति बार (कनेक्शन, बैटरी, घंटा) से पता चलता है, भले ही मैं इस पर निष्क्रिय है मेरी मुख्य खिड़की।

मैं कर की कोशिश की है:

[mpvc setWantsFullScreenLayout:YES]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

और कुछ भी नहीं काम करने के लिए लगता है, लेकिन अगर मैं भी डाल:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent]; 

स्थिति पट्टी गायब हो! लेकिन मूवी कंट्रोलर अभी भी आकार बदलता है जैसे स्टेटस बार वहां है (यहां तक ​​कि जब मैंने पहले से ही -setWantsFullScreenLayout: का उपयोग किया था)।

क्या कोई मुझे स्टेटस बार के बिना वीडियो दिखाने के लिए एक आसान (सिद्ध) तरीका बता सकता है?

धन्यवाद।

उत्तर

2

बस एहसास हुआ सवाल आईपैड विशेष था। मेरा कोड आईफोन के लिए था, लेकिन इसमें से कुछ आपकी मदद कर सकते हैं।

मुझे इसे दो दिन पहले करना था, मुझे लगता है कि वीडियो शुरू होने के बाद आपकी समस्या स्टेटस बार पर छिपाने को नहीं बुला रही है। किसी भी तरह से मैंने कोशिश की और यहाँ कोड है जो 3.0 से 4.2 के लिए काम करता है परीक्षण किया है:

- (IBAction) playIntroVideo 
{ 
    NSString *videoString = [[NSBundle mainBundle] pathForResource:@"intro" ofType:@"mp4"]; 
    NSURL *videoURL = [NSURL fileURLWithPath:videoString]; 
    _player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 

    if 
    (
     [_player respondsToSelector:@selector(view)] && 
     [_player respondsToSelector:@selector(setFullscreen:animated:)] && 
     [_player respondsToSelector:@selector(setControlStyle:)] 
    ) 
    { 
     [[_player view] setFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT_FULL)]; 
     [_player setFullscreen:YES animated:YES]; 
     [_player setControlStyle:MPMovieControlStyleNone]; 
     [self.view addSubview:[_player view]]; 
    } 

    [_player play]; 

    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(terminateVideo) 
    name:MPMoviePlayerPlaybackDidFinishNotification 
    object:nil]; 

    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    self.navigationController.navigationBarHidden = YES; 
} 

- (void) terminateVideo 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    self.navigationController.navigationBarHidden = NO; 

    if ([_player respondsToSelector:@selector(view)]) 
    { 
     [[_player view] removeFromSuperview]; 
    } 

    _player = nil; 
    [_player release]; 
} 
+0

मेरे लिए काम नहीं करता है। – Boon

-3

आप अपने plist में UIStatusBarHidden सेट कर सकते हैं, कि इसे हल करना चाहिए :)

+0

UIStatusBarHidden। नहीं, यह मदद नहीं करता है। –

+0

पूरे एप्लिकेशन के लिए स्टेटस बार छुपाएं, इसलिए मूवी नाटकों के दौरान यह प्रकट नहीं होता है, यह उचित समाधान नहीं है। –

0

इस सवाल का जवाब अंत में एक त्रुटि है:

 
_player = nil; 
[_player release]; 

ये उलट किया जाना चाहिए:

 
[_player release]; 
_player = nil; 

रिलीज के साथ संदेश शून्य का कोई प्रभाव नहीं पड़ता है।

संबंधित मुद्दे