У меня есть табличное представление, и в одной из ячеек у меня есть следующий код:
import UIKit
import Foundation
import WebKit
import AVFoundation
class OnlineVideoTableViewCell: UITableViewCell {
internal var videoPlayerSuperView = createEmptyView()
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:)")
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setUpUI()
}
convenience init(style: UITableViewCell.CellStyle, reuseIdentifier: String?, url: String = "", title: String) {
self.init(style: style, reuseIdentifier: reuseIdentifier)
self.videoTitleLabel.text = title
setUpUI()
setUpLayout()
}
func setUpUI() {
self.backgroundColor = .white
self.translatesAutoresizingMaskIntoConstraints = false
self.contentView.addSubview(videoPlayerSuperView)
videoPlayerSuperView.translatesAutoresizingMaskIntoConstraints = false
videoPlayerSuperView.backgroundColor = .smalt
}
func setUpLayout() {
videoPlayerSuperView.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: 2).isActive = true
videoPlayerSuperView.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -2).isActive = true
videoPlayerSuperView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -2 ).isActive = true
videoPlayerSuperView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 2 ).isActive = true
}
override func layoutSubviews() {
print("Playing ---->")
self.avPlayer = AVPlayer.init(playerItem: AVPlayerItem(url: URL(string: "https://www.youtube.com/embed/0oBx7Jg4m-o")!))
avPlayerLayer = AVPlayerLayer(player: avPlayer)
avPlayer!.volume = 3
avPlayer!.actionAtItemEnd = .none
avPlayerLayer!.bounds = self.bounds
self.videoPlayerSuperView.layer.insertSublayer(avPlayerLayer!, at: 9)
self.avPlayer!.play()
}
}
Я упростил ячейку, так как в ней также есть метка с заголовком среди мелких деталей (что все работаетпрекрасно).
Проблема в том, что мой код ничего не делает. Я могу видеть ячейку, я вижу большой квадрат, окрашенный моим собственным «смальтовым» цветом, где должно воспроизводиться видео, но нет ни звука, ни воспроизводимого видео.
Кроме этого, кажется, что все работаетнормально за исключением проблемы с воспроизведением.
Что я делаю не так?