私はデータベースからデータを取得するtableViewを持っています。私のTableView内のいくつかのセルにはビデオが含まれており、ビデオが表示されると正しく表示されます。ユーザーがスクロールしているときにビデオを止める方法
私の問題は、誰かがスクロールし続けると、そのビデオは引き続き再生されるということです。私はそれを変更したいと思います。ユーザーがビデオの一部を見てスクロールし続けると、ビデオをすぐに終了したいと思います。私はその問題を解決するのに近いと思っていますが、それはまだありません。
これは私のコードである:
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
}
すなわちコード単にstreamsModel.video_image
は.MOV拡張子(JSON)を有しているかどうかを確認の上。そうであれば、それはムービー/ビデオを取得し、それをAVPlayerに表示します。
コードからわかるように、ビデオは自動的に再生されるようにPlay()
メソッドが使用されています。問題は、たとえば、ビデオの長さが1分で、そのビデオを20秒間見てスクロールすると、そのビデオの再生が聞こえ、ユーザーがスクロールしたらすぐにビデオを停止したいと思うということです。
これは私のscrollViewコードで、今私はちょうどスクロール上または多分の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
}
したがって、隣り合う2つのセルの両方でビデオと表示が同時に行われると、両方のセルが自動的に再生されますか? - ある時点でどのように動作するかを検討したいかもしれません。 – Wez
一度に1つのビデオしか開始しません。セルは十分に大きいので、他のコンテンツを含んでいるので、一度に1つのセルにしか入れることができません。 – user1591668
今は十分に公正ですが、より大きなデバイスに表示されるとどうなりますか? - 私はユーザーが交渉よりも多くの騒音で砲撃される前にそれを検討したいと思う。 – Wez