Skip to content

Instantly share code, notes, and snippets.

@FlorianHardyDev
Last active March 19, 2021 14:00
Show Gist options
  • Select an option

  • Save FlorianHardyDev/4d30eb6cd907f89d1e6febf9861cb830 to your computer and use it in GitHub Desktop.

Select an option

Save FlorianHardyDev/4d30eb6cd907f89d1e6febf9861cb830 to your computer and use it in GitHub Desktop.
PlayerManager Views
// 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