videoPlayerViewの右下にトグルフルスクリーンボタンがある非フルスクリーンモードとフルスクリーンモードの両方をサポートするローカルビデオプレーヤーを実装しました。 controlsContainerViewというサブビューを追加して、再生/一時停止ボタン、スライダ、2つのラベル、トグルフルスクリーンボタンを追加しました。また、天気を処理するためにvideoPlayerViewでユーザのタップジェスチャを取得するtapGestureレコグナイザを追加しましたが、controlsContainerViewは表示されません。ここに私の質問が来る:フルスクリーンのときにVideoPlayerViewからSwift - ControlContainerViewが消える
完全なものではない、すべてが完全に動作します。トータルフルスクリーンボタンをクリックすると、ビデオ再生中に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)
}
私の質問を読んでくれてありがとうとは、あなたが私にいくつかの洞察を得ることができます願っています!