Ich habe einen lokalen Video-Player implementiert, der sowohl den Vollbild- als auch den Vollbildmodus unterstützt, mit einer Umschalttaste im Vollbildmodus in der unteren rechten Ecke des videoPlayerView. Ich habe eine Unteransicht namens controlsContainerView hinzugefügt, um die Play/Pause-Taste, den Schieberegler, die zwei Beschriftungen und die Umschalttaste für den Vollbild-Bildschirm einzuschließen. Ich habe auch einen tapGesture Recognizer hinzugefügt, um eine tippende Geste auf die videoPlayerView zu bekommen, um mit dem Wetter fertig zu werden oder die controlsContainerView sollte nicht angezeigt werden. Hier kommt meine Frage:Swift - ControlContainerView verschwindet von VideoPlayerView, wenn Vollbild
Im Vollbildmodus funktioniert alles einwandfrei. Wenn Sie auf die Schaltfläche "Vollbild umschalten" klicken, dreht sich der videoPlayerView um 90 Grad und wird auf Vollbild erweitert, während das Video abgespielt wird. Die Controls Containeransicht verschwand jedoch, egal ob ich auf den Bildschirm tippe oder nicht. Ich drucke den isHidden-Status der controlsContainerView und es ändert sich zwischen "true" und "false", was es sollte. Die Rahmengröße und -position ist auch gut. Aber es zeigt sich nicht visuell.
func handleFullScreen() {
controlsContainerView.removeFromSuperview()
if isFullScreen {
fullScreenBtn.setImage(UIImage(named: "full_screen"), for: .normal)
UIView.animate(withDuration: 3, animations: {
let width = UIApplication.shared.keyWindow?.frame.width
let height = width!*9/16
self.transform = CGAffineTransform(rotationAngle: 0)
self.frame = CGRect(x: 0, y: 0, width: width!, height: height)
})
} else {
fullScreenBtn.setImage(UIImage(named: "full_screen_exit"), for: .normal)
UIView.animate(withDuration: 3, animations: {
self.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2)
self.frame = UIScreen.main.bounds
self.controlsContainerView.frame = self.bounds
self.playerLayer.frame = self.bounds
})
}
isFullScreen = !isFullScreen
}
func handleControlsContainerViewHide() {
print("Tapped")
if controlsContainerViewIsHidden {
controlsContainerView.isHidden = false
} else {
controlsContainerView.isHidden = true
}
controlsContainerViewIsHidden = !controlsContainerViewIsHidden
print(controlsContainerView.isHidden)
}
func setupVideoControlView() {
//setupGradientLayer()
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleControlsContainerViewHide)))
controlsContainerView.frame = bounds
addSubview(controlsContainerView)
// Sub views of controls container view, I deleted the layout constraints since they are irrelevant to this question.
controlsContainerView.addSubview(activityIndicatorView)
controlsContainerView.addSubview(pausePlayBtn)
controlsContainerView.addSubview(fullScreenBtn)
controlsContainerView.addSubview(videoLengthLabel)
controlsContainerView.addSubview(currentTimeLabel)
controlsContainerView.addSubview(videoSlider)
controlsContainerView.addSubview(closeBtn)
}
Vielen Dank für das Lesen meiner Frage und hoffe, dass Sie mir ein paar Einblicke bekommen können!