8
का उपयोग कर लैंडस्केप मोड में फिल्म बारी बारी से नहीं कर सकते

[अद्यतन]iPhone MPMoviePlayerViewController

के रूप में सिफारिश की थी मैं सभी झुकाव का समर्थन करने के लिए सभी जनक दृश्य नियंत्रकों बदल दिया है। मेरी ऐप संरचना निम्नानुसार है: AppDelegate> रूट व्यू कंट्रोलर> वीडियो> वीडियो विवरण> MPMoviePlayerViewController।

यदि मैं इन सभी को सभी उन्मुखताओं का समर्थन करने के लिए बदलता हूं तो वीडियो परिदृश्य में खेलेंगे। लेकिन सभी उन्मुखताओं का समर्थन करना मैं नहीं चाहता हूं और अन्य मुद्दों का कारण बनता हूं। क्या कोई अन्य काम है या मैं कुछ और कर सकता हूं?

धन्यवाद

[/ अद्यतन]

मुझे लगता है कि MPMoviePlayerViewController के एक कस्टम उपवर्ग का उपयोग कर वीडियो प्रदर्शित करता है एक चित्र आधारित iPhone एप्लिकेशन की है। उपयोगकर्ता प्रेस मैं इस वर्ग का एक उदाहरण बनाने के खेल सकते हैं और यह रीति से प्रस्तुत करते हैं जब इस प्रकार है:

- (IBAction) playPressed:(id)sender { 

NSString *filepath = [[NSBundle mainBundle] pathForResource:self.currentVideoModel.videoFileName ofType:@"m4v"]; 
NSURL *fileURL = [NSURL fileURLWithPath:filepath]; 

// MovieViewController is just a simple subclass of MPMoviePlayerViewController 
self.moviePlayerController = [[MovieViewController alloc] initWithContentURL:fileURL]; 

// full screen code. 
[self.moviePlayerController.moviePlayer setScalingMode:MPMovieScalingModeFill]; 
[self.moviePlayerController.moviePlayer setFullscreen:TRUE]; 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerController]; 

[self presentMoviePlayerViewControllerAnimated:self.moviePlayerController]; 
} 

समस्या यह है कि चित्र में ठीक खेलता है, लेकिन जब मैं परिदृश्य के लिए iPhone बारी वीडियो अभी भी चित्र में खेलता है और नहीं परिदृश्य :(ऐप्लिकेशन में सभी दृश्य नियंत्रकों केवल पोर्ट्रेट ओरिएंटेशन का समर्थन

मेरे MPMoviePlayerViewController उपवर्ग केवल निम्न विधि को ओवरराइड करता उन्मुखीकरण परिवर्तन के लिए अनुमति देने के लिए, लेकिन यह नहीं को प्रभावित किया है:।

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
return (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft); 
} 

मैं भी हैवीडियो को प्रोग्रामेटिक रूप से घुमाए जाने की कोशिश की लेकिन पूरी तरह से कोई भाग्य नहीं है, यह हमेशा पोर्ट्रेट मोड में रहता है।

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 

if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
    [self.view setTransform:CGAffineTransformMakeRotation(M_PI/2)]; 
    return true; 
} 
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) { 
    [self.view setTransform:CGAffineTransformMakeRotation(M_PI * 2)]; 
    return true; 
} 
else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) { 
    [self.view setTransform:CGAffineTransformIdentity]; 
    return true; 
} 
else return false; 

}

+0

रोटेशन समर्थन * हेरार्किकल का प्रकार है। इसलिए यदि आप मूवी प्लेयर कंट्रोलर पेश कर रहे हैं और यह आपको घूमने नहीं दे रहा है, तो मेरा पहला डिबगिंग चरण प्रत्येक व्यू कंट्रोलर को जांचना होगा जो आपके मूवी प्लेयर को 'चाहिएऑटोरोटेट..' विधि' के लिए ले जाता है और इसे 'यस वापस कर देता है; '(यदि आप बाद में अतिरिक्त परेशानी को बचाना चाहते हैं तो आप इसे बढ़ा सकते हैं)।फिर उन्हें पोर्ट्रेट पर लॉक होने तक एक बार वापस पोर्ट्रेट पर स्विच करें, और आप जानते हैं कि आपकी ओर घुमाने की कोशिश करते समय कौन सी UIIit' जांच कर रहा है। वहां से जाओ – darvids0n

+0

@ darvids0n धन्यवाद। मैं वास्तव में चित्र के अलावा किसी भी अन्य दृश्य को समर्थन देना नहीं चाहता हूं, लेकिन मुझे लगता है कि मैं इसे आज़मा दूंगा और देखें कि क्या होता है। – bennythemink

+0

@ darvids0n मैंने अपना प्रश्न अपडेट किया। क्या आप कुछ सुझाव दे सकते हैं? किसी भी सलाह के लिए बहुत धन्यवाद। – bennythemink

उत्तर

10

[संपादित करें] नीचे समाधान iOS5 पर पूरी तरह से काम किया है, लेकिन ये अब iOS6 पर काम करता है। मुझे उम्मीद है कि भविष्य में इस मुद्दे को देखने के लिए कुछ समय मिल सकता है :([/ EDIT]

ठीक है मैंने इसे ठीक किया है। आईओएस ने अभिविन्यास परिवर्तनों के ऐप को कैसे सूचित किया है, इसकी गलत समझ के साथ यह सब कुछ करना था। सोचा कि यह किसी भी अभिविन्यास परिवर्तन को प्रसारित करता है लेकिन ऐसा नहीं होता है, यह आपके दृश्य पदानुक्रम का पालन करता है और यह आपके ऊपर एक अभिविन्यास परिवर्तन के किसी भी बच्चे के दृश्य नियंत्रकों को बताने के लिए है। यह मेरा पूर्ववत था।

मेरे ऐप में निम्नलिखित शामिल थे सेट अप:

खिड़की> RootViewController> tabbar नियंत्रक> नव नियंत्रक> दृश्य नियंत्रक> MPMoviePlayerViewController

मैंने टैबबार नियंत्रक को केवल पोर्ट्रेट मोड के लिए सही लौटने के लिए उप-वर्गीकृत किया। मैंने इसे रूट व्यू कंट्रोलर shouldAutoRotateToOrientation विधि से वापस कर दिया। यह सुनिश्चित करता है कि सभी विचार केवल चित्र होंगे।

फिर मैंने रूटव्यू कंट्रोलर से बुलाए गए presentMoviePlayerViewControllerAnimated विधि का उपयोग करके फिल्म को सामान्य रूप से प्रस्तुत किया। यह स्वचालित रूप से कस्टम MPMoviePlayerViewController की shouldAutoRotateToOrientation विधि कहा जाता है जो दोनों परिदृश्य और चित्र दोनों के लिए YES पर सेट किया गया था :)