Как я могу воспроизвести два разных видео с помощью SegmentControl без этой задержки sh? - PullRequest
0 голосов
/ 09 апреля 2020

Мой проект более или менее работает, но есть небольшая проблема. Когда я выбираю другой случай SegmentControl, воспроизводится правильное видео, например, когда я нажимаю case1, первое видео воспроизводится в моем представлении. Но когда я касаюсь дела, я вижу refre sh подпредставления (я добавил видео об этом). Два видео начинаются и заканчиваются в одном кадре. У кого-нибудь есть идеи, как это исправить.

(извините за мой очень плохой Engli sh, но я немец и у нас нет таких блестящих сайтов)

Я просто начал программировать как хобби, так что я не знаю, есть ли лучший способ решить это. Большое спасибо.

Видео проблемы:

https://youtu.be/IfttEI8GXQw

Мой код:

class ViewController: UIViewController {

@IBOutlet weak var videoLayer: UIView!

var player: AVPlayer!
var avpController = AVPlayerViewController()

func first(){
    let moviePath = Bundle.main.path(forResource: "aVid1", ofType: "mp4")
    if let path = moviePath{
        let url = NSURL.fileURL(withPath: path)
        self.player = AVPlayer(url: url)
        self.avpController = AVPlayerViewController()
        self.avpController.player = self.player
        avpController.view.frame = videoLayer.frame
        avpController.showsPlaybackControls = false
        avpController.view.alpha = 0
        self.addChild(avpController)
        self.view.addSubview(avpController.view)
        avpController.view.alpha = 1
        player.play()
    }
}

func second(){
    let moviePath = Bundle.main.path(forResource: "aVid1_2", ofType: "mp4")
    if let path = moviePath{
        let url = NSURL.fileURL(withPath: path)
        self.player = AVPlayer(url: url)
        self.avpController = AVPlayerViewController()
        self.avpController.player = self.player
        avpController.view.frame = videoLayer.frame
        avpController.showsPlaybackControls = false
        avpController.view.alpha = 0
        self.addChild(avpController)
        self.view.addSubview(avpController.view)
        avpController.view.alpha = 1
        player.play()
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    let moviePath = Bundle.main.path(forResource: "aVid1", ofType: "mp4")
    if let path = moviePath{
        let url = NSURL.fileURL(withPath: path)
        self.player = AVPlayer(url: url)
        self.avpController = AVPlayerViewController()
        self.avpController.player = self.player
        avpController.view.frame = videoLayer.frame
        avpController.showsPlaybackControls = false
        self.addChild(avpController)
        self.view.addSubview(avpController.view)
    }
}
@IBAction func Switcher(_ sender: UISegmentedControl) {
    switch sender.selectedSegmentIndex {
    case 0:
        second()
    case 1:
        first()
    default:
        break
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...