From 5b548488ac0d9d35dabdea125d39576e48be20cb Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Mon, 18 Feb 2019 13:50:47 -0500 Subject: [PATCH] Hide the album play button when scrolling starts --- .../Controllers/AlbumViewController.swift | 3 +++ Persephone/Views/AlbumItemView.swift | 27 +++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Persephone/Controllers/AlbumViewController.swift b/Persephone/Controllers/AlbumViewController.swift index daba5b7..f4a6e1d 100644 --- a/Persephone/Controllers/AlbumViewController.swift +++ b/Persephone/Controllers/AlbumViewController.swift @@ -19,6 +19,8 @@ class AlbumViewController: NSViewController, override func viewDidLoad() { super.viewDidLoad() + albumScrollView.postsBoundsChangedNotifications = true + NotificationCenter.default.addObserver( self, selector: #selector(updateAlbums(_:)), @@ -73,5 +75,6 @@ class AlbumViewController: NSViewController, return NSSize(width: itemWidth, height: itemHeight) } + @IBOutlet var albumScrollView: NSScrollView! @IBOutlet var albumCollectionView: NSCollectionView! } diff --git a/Persephone/Views/AlbumItemView.swift b/Persephone/Views/AlbumItemView.swift index e0dc4a9..d7087d0 100644 --- a/Persephone/Views/AlbumItemView.swift +++ b/Persephone/Views/AlbumItemView.swift @@ -31,15 +31,38 @@ class AlbumItemView: NSView { addTrackingArea(trackingArea) } + required init?(coder decoder: NSCoder) { + super.init(coder: decoder) + + NotificationCenter.default.addObserver( + self, + selector: #selector(viewWillScroll(_:)), + name: NSScrollView.willStartLiveScrollNotification, + object: nil + ) + } + + @objc func viewWillScroll(_ notification: Notification) { + hidePlayButton() + } + override func resize(withOldSuperviewSize oldSize: NSSize) { - playButton.isHidden = true + hidePlayButton() } override func mouseEntered(with event: NSEvent) { - playButton.isHidden = false + showPlayButton() } override func mouseExited(with event: NSEvent) { + hidePlayButton() + } + + func showPlayButton() { + playButton.isHidden = false + } + + func hidePlayButton() { playButton.isHidden = true }