2011-11-21 2 views
2

MPMoviePlayerController에서 컨트롤이 사라지면 상태 표시 줄도 사라집니다. 컨트롤이 사라져도 상태 표시 줄이 나타나기를 원하기 때문에 아래 코드를 삽입했습니다.ios의 MPMoviePlayerController에서 상태 표시 줄을 사라지지 않게 만드는 방법은 무엇입니까?

[[UIApplication sharedApplication] setStatusBarHidden:NO]; 위 코드는 플레이어 컨트롤과 함께 사라지고 있습니다. 이 문제를 해결하는 방법.

아래 코드를 찾아 수정 방법을 알려주십시오.

- (void) readyPlayer { 

mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; 
if ([mp respondsToSelector:@selector(loadState)]) 
    { 
     // Set movie player layout 
     [mp setControlStyle:MPMovieControlStyleFullscreen]; 
     [mp setFullscreen:YES]; 

    // May help to reduce latency 
    [mp prepareToPlay]; 

    // Register that the load state changed (movie is ready) 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateChanged:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; 
     } else { 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePreloadDidFinish:) name:MPMediaPlaybackIsPreparedToPlayDidChangeNotification 
                object:nil]; 
     } 
    // Register to receive a notification when the movie has finished playing. 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; 
} 

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification { 

    NSLog(@"moviePlayerLoadStateChanged"); 
    // Unless state is unknown, start playback 
    if ([mp loadState] != MPMovieLoadStateUnknown) 
     { 
    // Remove observer 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification 
           object:nil]; 
     [[UIApplication sharedApplication] setStatusBarHidden:NO]; 

     // Rotate the view for landscape playback 
    [[self view] setBounds:CGRectMake(0, 0, 768, 1000)]; 

     // Set frame of movieplayer 
     [[mp view] setFrame:CGRectMake(0, 0, 768, 1000)]; 

    // Add movie player as subview 
    [[self view] addSubview:[mp view]]; 

    // Play the movie 
    [mp play]; 
    } 
} 

- (void) moviePreloadDidFinish:(NSNotification*)notification { 
    // Remove observer 
    NSLog(@"moviePreloadDidFinish"); 
    [[NSNotificationCenter defaultCenter] removeObserver:nil 
                name:MPMediaPlaybackIsPreparedToPlayDidChangeNotification 
                object:nil]; 

    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    // Play the movie 
    [mp play]; 
} 

- (void) moviePlayBackDidFinish:(NSNotification*)notification {  
    NSLog(@"moviePlayBackDidFinish"); 
    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    // Remove observer 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification 
          object:nil]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

왜 상태 표시 줄이 필요합니까? – BoltClock

+0

나는 내 앱에 플레이어를 내장했고 전 화면 플레이어로 비디오를 재생하지 않기 때문에 상단에 상태 표시 줄을 표시해야합니다. – suse

답변

2

이것은 잘 알려진 호 MPMovieControlStyleFullscreen입니다. MPMovieControlStyleEmbedded controlStyle을 사용하기 만하면됩니다.

그리고 그런데 어쨌든 더 적절한 controlStyle입니다.