J'ai une tableView qui obtient des données de la base de données. Certaines des cellules de mon TableView contiennent des vidéos et lorsque nous rencontrons une vidéo, elle s'affiche correctement.Comment puis-je arrêter la vidéo lorsque l'utilisateur fait défiler
Mon problème est que si quelqu'un continue à faire défiler alors cette vidéo continue à jouer. Je voudrais changer cela et si l'utilisateur regarde une partie d'une vidéo continue à défiler alors je voudrais terminer la vidéo juste là. Je pense que je suis proche de résoudre ce problème, mais pas encore là.
Ceci est mon code:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Home", for: indexPath) as! Home
let filename = streamsModel.video_image[indexPath.row] as NSString
if filename.pathExtension == "mov" {
let movieURL = URL(string: streamsModel.video_image[indexPath.row])
cell.videoCapHeight.constant = CGFloat(Float(cell.pic_height!))
cell.playerView = AVPlayer(url: movieURL!)
cell.MyAVPlayer.player = cell.playerView
cell.MyAVPlayer.showsPlaybackControls = false
cell.MyAVPlayer.view.frame = cell.videoView.bounds
cell.videoView.addSubview(cell.MyAVPlayer.view)
controller.addChildViewController(cell.MyAVPlayer)
cell.playerView?.isMuted = false
cell.MyAVPlayer.player?.play()
}
return cell
}
Ce code ci-dessus vérifie simplement si le streamsModel.video_image
a une extension .mov (JSON). Si c'est le cas, il obtient le film/vidéo et l'affiche dans un AVPlayer.
Comme vous pouvez le voir dans le code, la méthode Play()
est utilisée pour que les vidéos commencent à être lues automatiquement. Le problème est que si une vidéo est, par exemple, d'une minute et que vous en regardez 20 secondes et que vous faites défiler vers le bas, vous entendez toujours cette vidéo et je voudrais arrêter la vidéo dès que l'utilisateur défile.
Ceci est mon code ScrollView maintenant je dois juste arrêter les vidéos sur parchemin ou peut-être dans UITableViewCell:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (self.lastContentOffset > scrollView.contentOffset.y + 0) {
print("scrolling up")
}
else if (self.lastContentOffset < scrollView.contentOffset.y) {
print("scrolling down")
}
self.lastContentOffset = scrollView.contentOffset.y
}
Donc, si deux cellules l'une à côté de l'autre ont la vidéo et l'affichage en même temps, elles seront lues automatiquement? - pourrait vouloir envisager de changer comment cela fonctionne à un moment donné. – Wez
Pas tout à fait 1 vidéo commence à la fois. Les cellules sont suffisamment grandes pour que vous puissiez être sur une seule cellule à la fois, car elles contiennent d'autres contenus. – user1591668
C'est assez juste pour l'instant, mais que se passe-t-il s'ils sont affichés sur un appareil plus grand? - Je voudrais considérer cela avant qu'un utilisateur ne soit bombardé avec plus de bruit que ce qu'il avait négocié. – Wez