2014-09-28 9 views
8

मैं आईओएस 8 पर एक एप्लिकेशन पोर्ट कर रहा हूं। मेरे पास एक वीडियो चलाने के लिए कुछ कोड था जो पहले काम कर रहा था लेकिन अब यह नहीं है।MPMoviePlayerController लेआउट बाधा मुद्दों

जब मैंने इसे चलाने के लिए, मैं निम्नलिखित त्रुटियाँ मिलती है:

movieController = [[MPMoviePlayerController alloc] 
       initWithContentURL:[NSURL URLWithString:playlistUrl]]; 

movieController.movieSourceType = MPMovieSourceTypeStreaming; 
[movieController.view setFrame:[self.playerView bounds]]; 

[self.playerView addSubview:movieController.view]; 
[movieController play]; 

किसी भी विचार:

(
"<NSLayoutConstraint:0x7faba2df5940 H:|-(34)-[MPKnockoutButton:0x7faba2e6d750](LTR) (Names: '|':_UIBackdropContentView:0x7faba2dc38c0)>", 

"<NSLayoutConstraint:0x7faba2d51780 H:[MPKnockoutButton:0x7faba2e6d750]-(34)-[MPDetailSlider:0x7faba2dc6440](LTR)>", 

"<NSLayoutConstraint:0x7faba2d5b7f0 H:[MPDetailSlider:0x7faba2dc6440]-(34)-[UIView:0x7faba2dc4060](LTR)>", 

"<NSLayoutConstraint:0x7faba2dc5da0 UIView:0x7faba2dc4060.right == _UIBackdropView:0x7faba2dbfdc0.right>", 

"<NSLayoutConstraint:0x7faba2dc58d0 H:|-(0)-[_UIBackdropView:0x7faba2dbfdc0] (Names: '|':MPVideoPlaybackOverlayView:0x7faba2dbf6a0)>", 

"<NSLayoutConstraint:0x7faba2dc5950 H:[_UIBackdropView:0x7faba2dbfdc0]-(0)-| (Names: '|':MPVideoPlaybackOverlayView:0x7faba2dbf6a0)>", 

"<NSLayoutConstraint:0x7faba2df9b10 H:[MPVideoPlaybackOverlayView:0x7faba2dbf6a0(0)]>", 

"<NSAutoresizingMaskLayoutConstraint:0x7faba2dfbfa0 h=-&- v=-&- _UIBackdropContentView:0x7faba2dc38c0.midX == _UIBackdropView:0x7faba2dbfdc0.midX>", 

"<NSAutoresizingMaskLayoutConstraint:0x7faba2dfbff0 h=-&- v=-&- _UIBackdropContentView:0x7faba2dc38c0.width == _UIBackdropView:0x7faba2dbfdc0.width>" 
) 

यहाँ कोड है?

उत्तर

7

ऐसा लगता है कि यह आईओएस 8.1 में तय किया गया है। अपग्रेड करने के बाद त्रुटि गायब हो गई।

हालांकि, मैं अपने कोड थोड़ा सा संशोधन करना था:

movieController = [[MPMoviePlayerController alloc] 
        initWithContentURL:[NSURL URLWithString:playlistUrl]]; 

movieController.movieSourceType = MPMovieSourceTypeStreaming; 

[movieController.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[playerView addSubview:movieController.view]; 

id views = @{ @"player": movieController.view }; 

[playerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[player]|" 
                     options:0 
                     metrics:nil 
                     views:views]]; 

[playerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[player]|" 
                     options:0 
                     metrics:nil 
                     views:views]]; 
[movieController play]; 
+0

धन्यवाद, साइमन, इसने मुझे बहुत समय बचाया! –

1

मैं अभी इस मुद्दे पर खुद आया हूं।

मैंने देखा कि स्क्रीन पर MKMoviePlayerController दृश्य के बिना भी बाधा चेतावनी दिखाई देगी और इससे पहले कि मैंने इसे कभी भी एक्सेस किया हो।

यह मुझे थंबनेल पीढ़ी एपीआई requestThumbnailImagesAtTimes:timeOption: और cancelAllThumbnailImageRequests पर मेरी कॉल को हटाने के लिए प्रेरित करता है।

थंबनेल पुनर्प्राप्त करने के वैकल्पिक तरीके का उपयोग करने के बाद चेतावनियां तुरंत बंद हो गईं।

मैं स्थानीय यूआरएल लोड कर रहा हूं, स्ट्रीमिंग नहीं कर रहा हूं - लेकिन मुझे लगता है कि स्ट्रीमिंग तंत्र कहीं थंबनेल लोड करने और उन मुद्दों को उत्पन्न करने का प्रयास कर रहा है जो हम देख रहे हैं।

मैंने इस मुद्दे के किसी भी दस्तावेज समाधान या उत्तर नहीं देखा है, इसलिए मुझे आशा है कि मेरे अचूक सबूत मदद करेंगे।

1

आलसी लोगों लिए।

मैं सीधे मैं बस से पहले बाधाओं के साथ गड़बड़

[movieController prepareToPlay]; 
[self.view addSubview:movieController.view]; 

के लिए नहीं

[movieController.view setTranslatesAutoresizingMaskIntoConstraints:YES]; 

फोन movieController.view.frame का उपयोग करना चाहते हैं।

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