2017-08-29 6 views
0

Est-ce que quelqu'un a trouvé comment suspendre AVPlayer en quittant une vue? J'ai cherché partout et n'ai trouvé aucune réponse.AVPlayer met en pause la vidéo lorsque vous quittez la vue.

J'ai essayé d'ajouter la fonction "pause du lecteur" dans viewWillDissappear et viewDidDisappear. Aucun des deux ne semble l'avoir compris. Je ne sais pas si cela a quelque chose à faire sera la vue de défilement, mais il semble qu'il devrait y avoir un moyen. Je n'ai rien vu dans la documentation d'Apple non plus.

Voici ce que j'ai essayé.

// 
// VideoTestViewController.swift 
// Faces of the Holocaust Photographic History 
// 
// Created by New User on 8/26/17. 
// Copyright © 2017 New User. All rights reserved. 
// 

import UIKit 
import AVFoundation 
import AVKit 



class VideoTest: UIViewController { 


var player : AVPlayer? 


override func viewDidLoad() { 
    super.viewDidLoad() 

    let url : URL = URL(string: "https://firebasestorage.googleapis.com/v0/b/faces-of-the-holocaust.appspot.com/o/Alan%20Hall.mp4?alt=media&token=19c13572-b6fb-42e9-94e5-535dac227de5")! 
    let player = AVPlayer(url: url) 
    var playerLayer : AVPlayerLayer? 
    playerLayer = AVPlayerLayer(player: player) 
    playerLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
    playerLayer!.frame = self.view.frame 
    self.view!.layer.addSublayer(playerLayer!) 
    player.play() 


    // Do any additional setup after loading the view. 
} 




override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 



/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 



override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 


override func viewWillDisappear(_ animated: Bool){ 

player?.pause() 
} 
*/ 

@IBAction func button(_ sender: Any) { 
    let playerIsPlaying = player?.rate != 0 
    if playerIsPlaying { 
     player?.pause() 
    } else { 
     player?.play() 
    } 

} 

} 

Répondre

0

Il s'avère que vous devez utiliser viewDidDisappear au lieu de viewWillDisappear