From e175babc5eb334eb72a8fcd2fe0fc68671ea1189 Mon Sep 17 00:00:00 2001 From: Ibrahim Sulejmenov Date: Thu, 20 Mar 2025 01:03:39 +0100 Subject: [PATCH] Adding InvisibleControlOverlays --- .../CustomPlayer/CustomPlayer.swift | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift index b9d00aa..45be44d 100644 --- a/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift +++ b/Sora/Utils/MediaPlayer/CustomPlayer/CustomPlayer.swift @@ -136,6 +136,7 @@ class CustomMediaPlayerViewController: UIViewController { loadSubtitleSettings() setupPlayerViewController() setupControls() + addInvisibleControlOverlays() setupSubtitleLabel() setupDismissButton() setupMenuButton() @@ -346,6 +347,45 @@ class CustomMediaPlayerViewController: UIViewController { ]) } + func addInvisibleControlOverlays() { + let playPauseOverlay = UIButton(type: .custom) + playPauseOverlay.backgroundColor = .clear + playPauseOverlay.addTarget(self, action: #selector(togglePlayPause), for: .touchUpInside) + view.addSubview(playPauseOverlay) + playPauseOverlay.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + playPauseOverlay.centerXAnchor.constraint(equalTo: playPauseButton.centerXAnchor), + playPauseOverlay.centerYAnchor.constraint(equalTo: playPauseButton.centerYAnchor), + playPauseOverlay.widthAnchor.constraint(equalTo: playPauseButton.widthAnchor, constant: 20), + playPauseOverlay.heightAnchor.constraint(equalTo: playPauseButton.heightAnchor, constant: 20) + ]) + + let backwardOverlay = UIButton(type: .custom) + backwardOverlay.backgroundColor = .clear + backwardOverlay.addTarget(self, action: #selector(seekBackward), for: .touchUpInside) + view.addSubview(backwardOverlay) + backwardOverlay.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + backwardOverlay.centerXAnchor.constraint(equalTo: backwardButton.centerXAnchor), + backwardOverlay.centerYAnchor.constraint(equalTo: backwardButton.centerYAnchor), + backwardOverlay.widthAnchor.constraint(equalTo: backwardButton.widthAnchor, constant: 20), + backwardOverlay.heightAnchor.constraint(equalTo: backwardButton.heightAnchor, constant: 20) + ]) + + let forwardOverlay = UIButton(type: .custom) + forwardOverlay.backgroundColor = .clear + forwardOverlay.addTarget(self, action: #selector(seekForward), for: .touchUpInside) + view.addSubview(forwardOverlay) + forwardOverlay.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + forwardOverlay.centerXAnchor.constraint(equalTo: forwardButton.centerXAnchor), + forwardOverlay.centerYAnchor.constraint(equalTo: forwardButton.centerYAnchor), + forwardOverlay.widthAnchor.constraint(equalTo: forwardButton.widthAnchor, constant: 20), + forwardOverlay.heightAnchor.constraint(equalTo: forwardButton.heightAnchor, constant: 20) + ]) + } + + func setupSubtitleLabel() { subtitleLabel = UILabel() subtitleLabel.textAlignment = .center @@ -735,6 +775,14 @@ class CustomMediaPlayerViewController: UIViewController { @objc func togglePlayPause() { if isPlaying { + if !isControlsVisible { + isControlsVisible = true + UIView.animate(withDuration: 0.5) { + self.controlsContainerView.alpha = 1.0 + self.skip85Button.alpha = 0.8 + self.view.layoutIfNeeded() + } + } player.pause() playPauseButton.image = UIImage(systemName: "play.fill") } else {