Проверьте, где вы добавили AVPlayerLayer
. Добавьте слой на index O
вместо того, чтобы добавлять его наверх.
Используйте insertSublayer(_:at:)
вместо addSublayer(_:)
class ViewController: UIViewController, UIGestureRecognizerDelegate {
@IBOutlet weak var imageView: UIImageView!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.imageView.isUserInteractionEnabled = true
self.addPlayer()
}
func addPlayer() {
if let url = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") {
let player = AVPlayer(url: url)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.imageView.bounds
playerLayer.videoGravity = .resizeAspect
self.imageView.layer.insertSublayer(playerLayer, at: 0)
player.play()
}
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapHandler(_:)))
tapGesture.delegate = self
self.imageView.addGestureRecognizer(tapGesture)
}
@objc func tapHandler(_ sender: UIGestureRecognizerDelegate) {
print("view tapped")
}
}
Теперь, когда вы нажимаете на view
, вызывается tapHandler(_:)
метод.
Не забудьте включить userInteraction
из imageView
вручную.
self.imageView.isUserInteractionEnabled = true