Исходя из вашего вопроса и от комментария/код из Рамис я сделал пример кода, который вы можете попробовать
Как отметил JAL contentOverlayView должен быть лучшим вариантом для отображения контроль над видео в AVPlayerController, но, как и в моей демонстрационной демонстрации, у contentOverlayview нет никакого взаимодействия с пользователем для кнопок или других элементов управления, как если бы вы просматривали трехмерный вид AVPlayerController, у него есть AVTouchIgnoringView/UIView впереди contentOverlayView, который может быть проблемой при взаимодействии пользователя contentOverlayView
Так другое решение, чтобы добавить вид наложения в 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
}
В начальной установке мы устанавливаем AVPlayerController, AVQueuePlayer и т.д ... в то время, мы можем добавить наложение на AVPlayerController
для предыдущего пункта нет прямого доступны и в соответствии с документацией деталь будет удалить, как только это следующий пункт играет, поэтому у нас есть две опции, как replaceCurrentItemWithPlayerItem
или insertItem(item: AVPlayerItem, afterItem: AVPlayerItem?)
Если вам нужно проверить Complet е-код, вы можете проверить его из: https://gist.github.com/Pyrolr/debb4fca8f608b1300e099a5b3547031
Примечание: Это так же, как прототип, он не работает отлично во всех случаях, но это может помочь вам понять основные функциональные возможности вы wnat и вы можете улучшить/оптимизируйте в соответствии с вашими требованиями
Вы можете сделать это легко из проекта, который был здесь: http://stackoverflow.com/a/36389738/1151916 Только вам нужно добавить пользовательские кнопки и метки в XIb файле, и они будут представлены пользователю , Какую функциональность вы хотите иметь? – Ramis