2010-09-15 52 views
14

Tôi có một ứng dụng iPad tạo và hiển thị video có số MPMoviePlayerViewController. Dưới đây là mã của tôi:MPMoviePlayerViewController Ẩn thanh trạng thái

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

Movie tải/phát lại hoạt động tốt, tuy nhiên, khi điều khiển Movie xuất hiện, nó cho thấy thanh trạng thái (kết nối, pin, giờ) ở phía trên, ngay cả khi tôi có nó ngừng hoạt động trên của tôi cửa sổ chính.

tôi đã cố gắng thực hiện:

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

Và không có gì dường như để làm việc, tuy nhiên nếu tôi cũng đặt: thanh

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent]; 

Tình trạng biến mất! Nhưng Bộ điều khiển phim vẫn được thu nhỏ lại như thể thanh trạng thái ở đó (ngay cả khi tôi đã sử dụng -setWantsFullScreenLayout:).

Ai đó có thể chỉ cho tôi một cách dễ dàng (đã được chứng minh) để hiển thị video mà không có thanh trạng thái không?

Cảm ơn.

Trả lời

2

Chỉ cần nhận ra câu hỏi là dành riêng cho iPad. Mã của tôi dành cho iPhone, nhưng một số có thể giúp bạn.

Tôi đã phải làm điều này một vài ngày trước, tôi nghĩ rằng vấn đề của bạn chỉ đơn giản là không gọi ẩn trên thanh trạng thái sau khi video bắt đầu phát. Dù bằng cách nào tôi đã thử và thử nghiệm mã ở đây mà làm việc 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

Không hiệu quả với tôi. – Boon

-3

Bạn có thể đặt UIStatusBarHidden trong plist của bạn, mà nên giải quyết nó :)

+0

UIStatusBarHidden. Không, nó không giúp được gì. –

+0

Ẩn thanh trạng thái cho toàn bộ ứng dụng để nó không xuất hiện trong khi phát phim không phải là giải pháp thích hợp. –

0

Câu trả lời cho câu hỏi này có lỗi ở cuối:

 
_player = nil; 
[_player release]; 

Những nên được đảo ngược:

 
[_player release]; 
_player = nil; 

Tin nhắn nil có bản phát hành không có hiệu lực.

Các vấn đề liên quan