セルが全幅がUIImageView
で、インラインビデオを再生するためにAVPlayerLayer
を作成しています。これはほぼ完全に機能します。唯一の問題は、画像ビューのpreviewImage
に追加したときに完全に表示されるフルサイズの画像ビューであり、左側と右側に1ピクセルのギャップがあることです。だから、ビデオが再生されているとき、あなたはそれに本当に気付くことができ、それはかなり嫌です。サブレイヤとしてAVPlayerLayerを追加すると、親ビューが完全に塗りつぶされません。
私はそうのようにそれを設定しています:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: false)
let cell = tableView.cellForRow(at: indexPath) as! GameMediaCell
if (cell.playerLayer != nil) {
cell.playerLayer?.player?.pause()
cell.playerLayer?.removeFromSuperlayer()
cell.playerLayer = nil
} else {
if let clipURI = viewModel?.mediaURIForIndex(indexPath.row) {
let player = AVPlayer(url: clipURI)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = cell.previewImage.frame
cell.previewImage.layer.addSublayer(playerLayer)
cell.playerLayer = playerLayer
playerLayer.player?.play()
}
}
}
を、私はどこか他の日にこれを発見し、それが正しい答えです。私自身の質問に答えるべきだったので、私はこれを受け入れます。ありがとう :) – user1898712