Last active
March 19, 2021 14:00
-
-
Save FlorianHardyDev/4d30eb6cd907f89d1e6febf9861cb830 to your computer and use it in GitHub Desktop.
PlayerManager Views
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // View components | |
| var bigPlayerWindow: UIWindow? | |
| var playerDetailViewController: PlayerDetailsViewController? | |
| var floatingButtonController: FloatingButtonController? | |
| var smallPlayerLastLocation: CGPoint? | |
| private func setupSmallPlayer(with style: UIStatusBarStyle) { | |
| if floatingButtonController == nil { | |
| floatingButtonController = FloatingButtonController() | |
| floatingButtonController?.floatingButtonDelegate = self | |
| floatingButtonController?.statusBarStyle = style | |
| floatingButtonController?.showWindow() | |
| } | |
| } | |
| private func setupBigPlayer() { | |
| guard let playlistSafe = self.playlist else { | |
| return | |
| } | |
| self.playerDetailViewController = PlayerDetailsViewController(with: playlistSafe.audios[currentIndex], | |
| from: playlistSafe) | |
| if bigPlayerWindow == nil { | |
| let statusBarHeight = UIApplication.shared.statusBarFrame.height | |
| bigPlayerWindow = UIWindow(frame: CGRect(x: 0.0, | |
| y: statusBarHeight, | |
| width: UIScreen.main.bounds.width, | |
| height: UIScreen.main.bounds.height - statusBarHeight)) | |
| bigPlayerWindow?.addShadow(shadowColor: .black, | |
| offSet: CGSize(width: 2.6, height: 2.6), | |
| opacity: 0.8, | |
| shadowRadius: 5.0, | |
| cornerRadius: PlayerDetailsViewController.Constants.cornerRadius, | |
| corners: [UIRectCorner.topLeft, UIRectCorner.topRight]) | |
| bigPlayerWindow?.rootViewController = self.playerDetailViewController | |
| bigPlayerWindow?.makeKeyAndVisible() | |
| bigPlayerWindow?.windowLevel = .normal | |
| bigPlayerWindow?.layer.zPosition = .infinity | |
| bigPlayerWindow?.isHidden = true | |
| setupBigPlayerSwipeGestures() | |
| } else { | |
| bigPlayerWindow?.rootViewController = self.playerDetailViewController | |
| } | |
| } | |
| private func setupBigPlayerSwipeGestures() { | |
| let swipeDown = UISwipeGestureRecognizer(target: self, | |
| action: #selector(handleGestureOnBigPlayer)) | |
| swipeDown.direction = .down | |
| bigPlayerWindow?.addGestureRecognizer(swipeDown) | |
| } | |
| @objc | |
| private func handleGestureOnBigPlayer(gesture: UISwipeGestureRecognizer) { | |
| if gesture.direction == .down { | |
| hidePlayerDetails() | |
| } | |
| } | |
| @objc | |
| func hidePlayerDetails() { | |
| bigPlayerWindow?.isHidden = true | |
| floatingButtonController?.showWindow() | |
| } | |
| private func showPlayerDetails() { | |
| self.floatingButtonController?.removeWindow() | |
| self.bigPlayerWindow?.isHidden = false | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment