2015-06-24 6 views
8

पर कोई "पूर्ण" बटन सामग्री स्ट्रीम करने के लिए मैं AVPLayerViewController का उपयोग कर रहा हूं। प्लेबैक ठीक काम करता है लेकिन मुझे दृश्य को खारिज करने के लिए "पूर्ण" बटन नहीं दिखाई देता है।AVPlayerViewController

यहाँ मैं कैसे मैं सेटअप और दृश्य नियंत्रक

NSURL* url = [content localSessionUrl]; 
AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init]; 
playerViewController.player = [AVPlayer playerWithURL:url]; 
[self.navigationController pushViewController:playerViewController animated:YES]; 
[self.navigationController setNavigationBarHidden:YES]; 

क्योंकि मैं एक navigationController पर जोर दे रहा हूँ यह है दिखाने के है? enter image description here

+0

आपने यह कैसे संभाला ?? कस्टम किया बटन बनाया? @dev –

+0

@Fyza, pushViewController के बजाय मैंने वर्तमान दृश्य कंट्रोलर को बुलाया जैसा कि – dev

+0

से नीचे pck456 द्वारा समझाया गया है [समाधान] (http://stackoverflow.com/a/41281453/4593553) मेरे लिए काम करें! – Jerome

उत्तर

7

हां, 'संपन्न' बटन एक मॉडल प्रस्तुति शैली के लिए बर्खास्तगी के रूप में कार्य करता है। यदि आप AVPlayerViewController को नेविगेशन स्टैक पर दबा रहे हैं तो आपको खुद को पॉपिंग करने की आवश्यकता होगी।

19

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

-(void)playVideoWithUrl:(NSURL *)url{ 
    AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc]init]; 
    playerViewController.player = [[AVPlayer alloc]initWithURL:url]; 
    [self presentViewController:playerViewController animated:YES completion:nil]; 
    playerViewController.view.frame = self.view.frame; 
    [playerViewController.player play]; 
} 
+1

इसे पूरी तरह से काम किया ... !! – UnnY

+0

स्विफ्ट 3 अपडेट: 'self.presentViewController' के बजाय 'self.showDetailViewController' का उपयोग करें – Florensvb

2

मुझे लगता है कि जब आप स्क्रीन है कि पूरे स्क्रीन पर आ जाती पर एक दृश्य के लिए AVPlayerViewController दृश्य जोड़ने मुद्दा है, यह यह के रूप में पहले से ही व्यवहार करता है पूर्ण स्क्रीन मोड में। यह चाल इसे एक ऐसे दृश्य में जोड़ना है जो स्क्रीन का एक छोटा सा हिस्सा ले ले।

// Setup an AVPlayerViewController 
self.avPlayerViewController = [[AVPlayerViewController alloc] init]; 
if ([self.avPlayerViewController respondsToSelector:@selector(allowsPictureInPicturePlayback)]) { 
    self.avPlayerViewController.allowsPictureInPicturePlayback = NO; 
} 

// Attach the Active Cloack AVPlayer to the AVPlayerViewController 
AVPlayer *player = self.avPlayer; 
self.avPlayerViewController.player = player; 
self.avPlayerViewController.view.frame = self.view.bounds; 
[self.view addSubview:self.avPlayerViewController.view]; 

// Setup the Parent Child relationshipo 
[self addChildViewController:self.avPlayerViewController]; 
[self.avPlayerViewController willMoveToParentViewController:self]; 
[self.avPlayerViewController didMoveToParentViewController:self]; 

हालांकि, मैं तो एक ही समस्या है कि मेरे खिलाड़ी एक हो गया बटन नहीं था था, इसलिए मैं वीडियो नहीं कर सकता:

शुरू में मैं ऐसा किया।

मैंने फिर अपने xib/storyboard को संशोधित किया और एक बटन के साथ शीर्ष पर एक UINavigationBar जोड़ा, और इसके नीचे एक कंटेनर के रूप में UIView जोड़ा। इसके बाद मैंने इस कंटेनर व्यू में avplayerViewController जोड़ा और नियंत्रण किसी भी पूर्ण स्क्रीन मोड में जादुई रूप से परिवर्तित नहीं हुआ। मुझे प्लेयर को पूर्ण स्क्रीन मोड में लेने के लिए एक पूर्ण स्क्रीन बटन मिला।

हालांकि मैं तो स्वत: मेरी नेविगेशन बार छिपाने के लिए और इस और एक शीर्षक आदि के लिए एक किया बटन जोड़ने के लिए कोड बनाने के लिए ...

0

आईपैड के लिए मैं पेश करने के लिए UIModalPresentationFormSheet का उपयोग किया था और किया बटन लापता wwas ... तो मैंने अपना खुद का बटन इस्तेमाल किया:

 AVPlayerViewController *playerViewController = 
[[AVPlayerViewController alloc] init]; 

//... 

     UIViewController *controllerToPresent = playerViewController; 

     if (IS_IPAD){ 
      SBNavigationController *nc = [[SBNavigationController alloc] initWithRootViewController:playerViewController]; 
      [playerViewController.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done", @"") style:UIBarButtonItemStylePlain target:self action:@selector(cancelPlayingPressed)]]; 
      controllerToPresent = nc; 
     } 
संबंधित मुद्दे