जेएएल ने उल्लेख किया contentOverlayView प्रदर्शित करने के लिए सबसे अच्छा विकल्प होना चाहिए बना दिया है AVPlayerController में वीडियो पर नियंत्रण, लेकिन मेरे मेरे नमूना डेमो के अनुसार सामग्रीऑवरलेव्यू में बटन या अन्य नियंत्रणों के लिए कोई उपयोगकर्ता इंटरैक्शन नहीं है, जैसे कि आप AVPlayerController के 3 डी व्यू में चेक इन करते हैं, इसमें AVTouchIgnoringView/UIView से आगे है सामग्रीऑवरले व्यू जो सामग्री के उपयोगकर्ता इंटरैक्शन में समस्या हो सकती है ओवरव्यू व्यू
तो एक और समाधान हम AVPlayerController
पर ओवरले जोड़ सकते प्रारंभिक सेटअप हम AVPlayerController, AVQueuePlayer आदि सेट पर ओवरले दृश्य जोड़ने के लिए AVPlayerViewController func addContentOverlayView() {
OverlayView.frame = CGRectMake(0,30,AVPlayerVC.view.bounds.width, 100)
OverlayView.hidden = true
OverlayView.backgroundColor = UIColor (red: 0.5, green: 0.5, blue: 0.5, alpha: 0.379)
let btnNext = UIButton(frame:CGRectMake(AVPlayerVC.view.bounds.width - 60,0,60,44))
btnNext.setTitle(">>", forState:.Normal)
btnNext.addTarget(self, action:"playNext", forControlEvents:.TouchUpInside)
// btnNext.layer.borderColor = UIColor (red: 0.0, green: 0.0, blue: 1.0, alpha: 0.670476140202703).CGColor
// btnNext.layer.borderWidth = 1.0
OverlayView.addSubview(btnNext)
let btnReplay = UIButton(frame:CGRectMake((AVPlayerVC.view.bounds.width/2)-40,0,80,44))
btnReplay.setTitle("Replay", forState:.Normal)
btnReplay.addTarget(self, action:"replayVideo", forControlEvents:.TouchUpInside)
OverlayView.addSubview(btnReplay)
let btnPrevious = UIButton(frame:CGRectMake(0,0,80,44))
btnPrevious.setTitle("<<", forState:.Normal)
btnPrevious.addTarget(self, action:"previousVideo", forControlEvents:.TouchUpInside)
OverlayView.addSubview(btnPrevious)
let btnComment = UIButton(frame:CGRectMake((AVPlayerVC.view.bounds.width/2)-70,40,140,44))
btnComment.setTitle("Comments", forState:.Normal)
btnComment.addTarget(self, action:"openComments", forControlEvents:.TouchUpInside)
OverlayView.addSubview(btnComment)
AVPlayerVC.view.addSubview(OverlayView);
}
func playNext() {
prevItem = AVPlayerVC.player?.currentItem
OverlayView.hidden = true
commmentQueuePlayer.advanceToNextItem()
}
func replayVideo() {
OverlayView.hidden = true
AVPlayerVC.player?.currentItem?.seekToTime(kCMTimeZero)
AVPlayerVC.player?.play()
}
func previousVideo() {
OverlayView.hidden = true
if prevItem != AVPlayerVC.player?.currentItem {
if (commmentQueuePlayer.canInsertItem(prevItem!, afterItem:AVPlayerVC.player?.currentItem)) {
//commmentQueuePlayer.insertItem(prevItem!, afterItem:AVPlayerVC.player?.currentItem)
commmentQueuePlayer.replaceCurrentItemWithPlayerItem(prevItem)
prevItem = AVPlayerVC.player?.currentItem
replayVideo()
}
} else {
replayVideo()
//Else display alert no prev video found
}
}
func stopedPlaying() {
if prevItem == nil {
prevItem = AVPlayerVC.player?.currentItem
}
OverlayView.hidden = false
}
में ... उस समय है
पिछली वस्तु के लिए कोई प्रत्यक्ष उपलब्ध नहीं है और दस्तावेज के अनुसार आइटम को हटाए जाने के बाद आइटम हटा दिया जाएगा, इसलिए हमारे पास replaceCurrentItemWithPlayerItem
या insertItem(item: AVPlayerItem, afterItem: AVPlayerItem?)
यदि आपको पूर्ण जांच की आवश्यकता है तो आइटम दो विकल्प हटा दिए जाएंगे ई कोड आप से यह जांच कर सकते हैं: https://gist.github.com/Pyrolr/debb4fca8f608b1300e099a5b3547031
नोट: यह वह जगह है सिर्फ प्रोटोटाइप की तरह, यह पूरी तरह से सभी मामलों में काम नहीं कर रहा है, लेकिन यह आप चाहता हूँ बुनियादी कार्यक्षमता को समझने में मदद कर सकता है और आप में सुधार कर सकते/अपनी आवश्यकताओं के आधार पर अनुकूलित करें
आप परियोजना जो यहाँ था से आसानी से कर सकते हैं: http://stackoverflow.com/a/36389738/1151916 सिर्फ आप xib फ़ाइल में कस्टम बटन और लेबल जोड़ की जरूरत है और वे उपयोगकर्ता के लिए प्रस्तुत किया जाएगा । आप कौन सी कार्यक्षमता चाहते हैं? – Ramis