मेरे पास MPMoviePlayerController
ऑब्जेक्ट है जो किसी भी पोर्ट्रेट या लैंडस्केप में एक वीडियो पूर्णस्क्रीन चलाता है। अगर वीडियो चल रहा है, तो वीडियो अभिविन्यास घुमाएगा और वीडियो शुरू होने के कुछ ही सेकंड के भीतर रोटेशन करें और वीडियो स्टेटस बार दिखाई दे रहा है, जब वीडियो समाप्त होता है तो मेरा नेविगेशन बार सही होता है। लेकिन अगर मैं वीडियो स्टेटस बार में वीडियो सेकंड में कुछ सेकंड गायब हो जाता हूं और फिर ओरिएंटेशन घुमाता है, तो जब वीडियो मेरा navigationBar
समाप्त होता है तो स्टेटस बार के पीछे आंशिक रूप से छिपा हुआ होता है, जैसे धक्का दिया जाता है।नेविगेशनबार और MPMoviePlayerController के बेहद अजीब व्यवहार। आईओएस या मेरी त्रुटि में बग?
क्या आपने कभी ऐसा कुछ देखा है?
मैं आसानी से इस बग को फिर से बनाने में सक्षम हूं। मैंने एक नया सिंगल व्यू ऐप बनाया और बस एक बटन और नेविगेशन बार जोड़ा। यदि वीडियो चल रहा है, तो मैं ओरिएंटेशन घुमाता हूं, पूर्णस्क्रीन को सक्षम करने के लिए टैप करें और वीडियो स्टेटस बार अभी भी दिखाई दे रहा है, जब वीडियो खत्म हो जाता है, तो सब अच्छा है। लेकिन, अगर मैं वीडियो स्टेटस बार गायब होने के बाद घूमने का इंतजार करता हूं, जब मैं घुमाता हूं और वीडियो समाप्त होता है, तो नेविगेशनबार स्टेटस बार के नीचे होता है। छवि देखें:
यहाँ सरल कोड मैं का उपयोग कर रहा है:
- (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];
}
वह स्थान है जहां मैं नीचे दिए गए सुझावों के साथ में वर्तमान में कर रहा हूँ। मेरे पास कुछ गलत होना चाहिए क्योंकि दुर्भाग्यवश मुझे अभी भी एक ही समस्या है।
यहाँ विधि 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];
है और यहाँ मेरे वर्तमान 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];
[[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];
आप एक स्क्रीनशॉट या दो शामिल करना चाह सकते हैं। सुझाव के लिए –
धन्यवाद जेफ। –
स्क्रीनशॉट के लिए आपका लिंक टूटा हुआ है। – JonasCz