我實現了一個支持非全屏和全屏模式的本地視頻播放器,在videoPlayerView的右下角切換全屏按鈕。我添加了一個名爲controlsContainerView的子視圖,以包含播放/暫停按鈕,滑塊,兩個標籤以及切換全屏按鈕。我還添加了tapGesture識別器,以便在videoPlayerView上獲取用戶點擊手勢,以便處理天氣或不顯示controlsContainerView。這裏是我的問題:Swift - 全屏顯示時ControlContainerView從VideoPlayerView中消失
在非全屏模式下,一切正常。在點擊切換全屏按鈕時,videoPlayerView旋轉90度,並在播放視頻時擴展至全屏。但是,無論我點擊不是的屏幕,控件容器視圖都會消失。我打印出controlsContainerView的isHidden狀態,它在「true」和「false」之間變化,它應該是這樣。框架的大小和位置也很好。但它並沒有在視覺上顯示出來。
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)
}
感謝您閱讀我的問題,並希望您能得到我一些見解!