2010-09-26 15 views
6

एक आईफोन ऐप में, मैं एक एमपीमोवी प्लेयर नियंत्रक बनाता हूं और इसे पूर्ण स्क्रीन मोड में वीडियो चलाने के लिए निर्देश देता हूं (मुझे नहीं लगता कि आईफोन पर एफ/एस मोड के अलावा कुछ भी विकल्प है जैसे आप आईपैड पर कर सकते हैं)।क्या एक UIActivityIndicator को MPMoviePlayerController पर पूर्ण स्क्रीन मोड में प्रदर्शित किया जा सकता है?

एक बार पूर्ण स्क्रीन प्लेयर आने के बाद, पूरी स्क्रीन काली हो जाती है और कभी-कभी कई सेकंड के लिए कोई नियंत्रण दिखाई नहीं देता है (MPMovieControlStyleDefault पर सेट)।

एक या तीन के बाद, नियंत्रण प्रकट होता है और वीडियो का पहला फ्रेम होता है, तो वीडियो सही ढंग से बफर और ऑटोप्लेज़ शुरू होता है।

  1. मैं पूर्ण स्क्रीन प्लेयर के शीर्ष पर यूआईएक्टिविटी इंडिकेटर कैसे प्रदर्शित कर सकता हूं? मैं साझा अनुप्रयोग नेटवर्क गतिविधि संकेतक प्रदर्शित कर रहा हूं, लेकिन मैं एक "लोड हो रहा है ..." लेबल के साथ एक पूर्ण आकार सूचक दिखाना चाहता हूं।

मैं movieplayer देखने के superview की एक subview के रूप, फिल्म खिलाड़ी के देखने के लिए, फिल्म खिलाड़ी की पृष्ठभूमि को देखने के एक subview के रूप में जोड़ने की कोशिश की है (मुझे लगता है कि निश्चित रूप से काम करने के लिए उम्मीद नहीं थी)। मुझे लगता है कि यहां कुंजी यह है कि एफ/एस मूवी प्लेयर व्यू मूवीप्लेयर के दृश्य के समान नहीं है जब एफ/एस मोड में नहीं है। हाँ? क्या पूर्ण स्क्रीन दृश्य तक पहुंचने का कोई तरीका है?

2. क्या स्क्रीन पूर्ण स्क्रीन मोड में शुरू होने वाले खिलाड़ी के लिए जल्द ही दिखाई दे सकता है (डोन बटन के साथ)? पूर्ण स्क्रीन मूवी प्लेयर शुरू होने पर ब्लैक स्क्रीन के अलावा कुछ भी लंबा विलंब नहीं होता है, इसलिए यदि उपयोगकर्ता अधीर हो जाता है तो उपयोगकर्ता पूर्ण बटन टैप नहीं कर सकता है (इसलिए केवल एक ही विकल्प ऐप से बाहर निकल जाएगा - एक विकल्प प्रदान करना पसंद करेगा पहले से प्लेबैक रद्द अगर वे चाहते हैं।

धन्यवाद!

उत्तर

7

आप पहले से ही ऐसा करने से नहीं कर रहे हैं, MPMoviePlayerLoadStateDidChangeNotification अधिसूचना के लिए रजिस्टर (http://developer.apple.com/library/ios/documentation/ Mediaplayer/संदर्भ/MPMoviePlayerController_Class/MPMoviePlayerController/MPMoviePlayerController.html # // apple_ref/c/data/MPMoviePlayerLoadStateDidChangeNotification) और MPMoviePlayerController के लोडस्टेट को MPMovieLoadStatePlayable में बदलने के लिए प्रतीक्षा करें मूवी प्लेयर प्रस्तुत करने से पहले।

इस तरह, आप मूवी खेलने के लिए तैयार होने तक अपने स्वयं के दृश्य पर गतिविधि संकेतक प्रस्तुत कर सकते हैं। (उपयोगकर्ता के लिए फिल्म का इंतजार रद्द करने का एक तरीका शामिल करना सुनिश्चित करें।)

सिद्धांत रूप में, आप MPMovewPlayerController के दृश्य में एक गतिविधि संकेतक जोड़ने में सक्षम होना चाहिए, लेकिन मैंने कभी भी उस दृष्टिकोण की कोशिश नहीं की है और यह लगता है जैसे यह आपके लिए काम नहीं कर रहा है।

एक और विकल्प MPMoviePlayer के दृश्य को मौजूदा गतिविधि संकेतक के नीचे जोड़ना है। मैंने सफलतापूर्वक यह कोशिश की।

[moviePlayer setContentURL:trailer.downloadLink]; 
moviePlayer.fullscreen = YES; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
[moviePlayer prepareToPlay]; 

[self.navigationController.view addSubview:self.activityIndicator]; 
self.activityIndicator.center = self.navigationController.view.center; 
[self.activityIndicator startAnimating]; 

moviePlayer.view.frame = self.navigationController.view.bounds; 
[self.navigationController.view insertSubview:moviePlayer.view belowSubview:self.activityIndicator]; 

यहां मेरे अधिसूचना हैंडलर हैं।

#pragma mark MPMoviePlayerController notifications 

- (void)moviePlayerLoadStateChanged:(NSNotification *)notif 
{ 
    NSLog(@"loadState: %d", moviePlayer.loadState); 
    if (moviePlayer.loadState & MPMovieLoadStateStalled) { 
     [self.activityIndicator startAnimating]; 
     [moviePlayer pause]; 
    } else if (moviePlayer.loadState & MPMovieLoadStatePlaythroughOK) { 
     [self.activityIndicator stopAnimating]; 
     [moviePlayer play]; 

    } 
} 

- (void)moviePlayerPlaybackFinished:(NSNotification *)notif 
{ 
    [moviePlayer.view removeFromSuperview]; 
    [self.activityIndicator stopAnimating]; 
} 
+0

लगता है कि आपने जब तक लोड राज्य MPMovieLoadStatePlayable है दृश्य पदानुक्रम के लिए फिल्म खिलाड़ी दृश्य जोड़ने स्थगित करने कह रहे हैं। मैं कोशिश करूँगा - मैंने इसके बारे में नहीं सोचा था। मुझे लगता है कि मूवी प्लेयर बफर शुरू कर देगा, इत्यादि।भले ही इसे दृश्य पदानुक्रम में जोड़ा नहीं गया हो। –

+0

बिल्कुल। इस तरह मैंने इसे अतीत में किया है। –

+0

मुझे यह नोट करना है कि मुझे रोकना था जब लोडस्टेट MPMovieLoadStatePlayable था। अन्यथा संकेतक दिखाई देगा जबकि मेरे वीडियो का पहला भाग खेल रहा था। – chaiwalla

0

मुझे स्क्रीन के केंद्र में गतिविधि इंडिकेटर प्रदर्शित करने के तथ्य को पसंद नहीं आया क्योंकि फिल्म प्लेयर के पास पहले से ही एक है। मैं नहीं बल्कि शीर्ष टूलबार पर प्रदर्शित:

-(void)activityIndicatorAnimate :(int)action 
{ 
    if (action == 0) { 
     /* STOP ANIMATING ACTIVITY INDICATOR */   
     if (activityIndicator != nil) { 
     [[self navigationItem] setRightBarButtonItem:nil]; 
     [activityIndicator stopAnimating]; 
     [activityIndicator release]; 
     activityIndicator = nil; 
    } 
    NSLog(@"Stop activityIndicator"); 
    } else if (action == 1) { 
     /* START ANIMATING ACTIVITY INDICATOR */ 
     if (activityIndicator == nil) { 
      activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; 
      UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator]; 
      [[self navigationItem] setRightBarButtonItem:barButton];    
      [barButton release]; 
      NSLog(@"Start activityIndicator"); 
     } 

     [activityIndicator startAnimating]; 
    } 

} 
संबंधित मुद्दे

 संबंधित मुद्दे