Tôi có đối tượng MPMoviePlayerController
phát toàn màn hình video ở cả dọc hoặc ngang. Nếu tôi xoay hướng trong khi video đang phát và thực hiện xoay vòng trong vài giây sau khi video bắt đầu phát và thanh trạng thái video hiển thị, khi video kết thúc thanh điều hướng của tôi là hoàn hảo. Nhưng nếu tôi chờ cho đến khi thanh trạng thái video biến mất một vài giây vào video đang phát và sau đó xoay hướng, khi video kết thúc, navigationBar
của tôi bị ẩn một phần phía sau thanh trạng thái, như bị đẩy lên.Hành vi cực kỳ kỳ lạ của navigationBar và MPMoviePlayerController. Lỗi trong iOS hoặc lỗi của tôi?
Bạn đã bao giờ thấy điều gì đó như thế này chưa?
Tôi có thể tạo lại lỗi này dễ dàng. Tôi đã tạo một Ứng dụng Chế độ xem đơn mới và chỉ cần thêm nút và thanh điều hướng. Nếu tôi xoay hướng trong khi đang phát video, hãy nhấn để bật chế độ toàn màn hình và thanh trạng thái video vẫn hiển thị khi video kết thúc, tất cả đều tốt. Nhưng, nếu tôi chờ đợi để xoay sau khi thanh trạng thái video biến mất, khi tôi xoay và video kết thúc, thanh điều hướng nằm trong thanh trạng thái. Xem hình ảnh:
Đây là mã đơn giản, tôi đang sử dụng:
- (void) playMovie {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource: @"movie" ofType: @"mov"]];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: url];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(moviePlayBackDidFinish:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: moviePlayer];
moviePlayer.controlStyle = MPMovieControlStyleDefault;
moviePlayer.shouldAutoplay = YES;
[self.view addSubview: moviePlayer.view];
[moviePlayer setFullscreen: YES animated: YES];
- (void) moviePlayBackDidFinish: (NSNotification *) notification
MPMoviePlayerController *player = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver: self
name: MPMoviePlayerPlaybackDidFinishNotification
object: player];
if ([player respondsToSelector: @selector(setFullscreen:animated:)])
{
[player.view removeFromSuperview];
}
Đây là nơi tôi hiện đang ở với những gợi ý đưa ra dưới đây. Tôi phải có một cái gì đó sai vì tiếc là tôi vẫn còn có cùng một vấn đề.
Dưới đây là phương pháp onPlayerWillExitFullScreen
UIView *view = [[[UIApplication sharedApplication] delegate].window.subviews lastObject];
if (view) {
[view removeFromSuperview];
[[[UIApplication sharedApplication] delegate].window addSubview:view];
}
MPMoviePlayerController *player = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver: self
name: MPMoviePlayerWillExitFullscreenNotification
object: player];
và đây là hiện playMovie
phương pháp của tôi:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource: @"movie" ofType: @"mov"]];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: url];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(moviePlayBackDidFinish:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: moviePlayer];
[[NSNotificationCenter defaultCenter]addObserver: self
selector: @selector(onPlayerWillExitFullScreen:)
name: MPMoviePlayerWillExitFullscreenNotification
object: self.moviePlayer];
moviePlayer.controlStyle = MPMovieControlStyleDefault;
moviePlayer.shouldAutoplay = YES;
[self.view addSubview: moviePlayer.view];
[moviePlayer setFullscreen: YES animated: YES];
Bạn có thể muốn bao gồm ảnh chụp màn hình hoặc hai ảnh chụp màn hình. –
Cảm ơn Jeff đã đề xuất. –
Liên kết của bạn đến ảnh chụp màn hình bị hỏng. – JonasCz