2017-07-03 13 views
0

我實現了一個支持非全屏和全屏模式的本地視頻播放器,在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) 

} 

感謝您閱讀我的問題,並希望您能得到我一些見解!

回答

0

對不起,我很笨。我自己手動刪除了controlsContainerView,這正是它沒有出現的原因。