Gestures, Animations, and Other Improvements - #146
Conversation
… adjustments to the existing animation.
… the buttons up above the home bar. Sits a bit further down on devices with a home button. Dynamic placement based on safe area.
…rger target area for grabbing to make it easier to use.
…cy on different device sizes.
Fixes the white corners in screenshots by extending the background a bit further
|
this looks good, thanks! can we make the changes on #147 in this PR too? i want to check it on my devices via testflight |
|
What do you mean? I've been struggling with GitHub so forgive me. I'm not familiar with GitHub and I've been trying to learn while I work. If you mean you want me to push the commits to one pull I can do that tonight |
|
I also have one more project I worked on over the weekend to fix playback when a song is missing from the server. I'm going to verifying it today and plan to push it tomorrow. I've been making changes, testing them for a day and then pushing the changes. Hopefully it'll make it into the next release. |
… dismissed and called back, play controls, and gradient blur. Allows scrolling, pause to unblur, and return to current lyrics. Added the ability to identify when there is a server error vs no lyrics for a song. Tested on iPhone 13 Pro Max, untested on iPad or iPhones of other sizes. Not tested on iOS 16 or 17. Compatibility should be iOS 18+. Certain features will need to be disabled for compatibility on iOS 16 and 17 such as all blur effects. Likely need to be cleaned up. A lot of trial and error was involved in the changes.
Makes the LyricView stand on its own. Gives it playback controls, updated bottom button bar, adds blur, additional line spacing, and more. Should be compatible with iOS 18 and up. Requires work to limit blur effect on iOS 16 and 17 due to compatibility issues. Likely requires some tiding, very trial and error attempting to maintain compatibility with iOS 16 and 17. Tested on iPhone 13 Pro Max, requires testing on newer and varied screen sizes. That includes iPads, and iPhones.
how is this possible? |
I probably should have explained better, rather than getting stuck on a song I made it wait 3 seconds and switch from showing the pause button to the play button. It checks if a user has changed the song themselves and if not it moves to the next using self.nextSong. Initially I had it just skipping the song, however, that meant that it would prevent going to the song before the missing one because it would skip forward again. Even when loading takes a while it continues to work as intended. It only skips when a song fails to load and is called in both spots where MediaFailure=true. Forgive me if I'm getting the name wrong. I don't have my Mac in front of me. When I first setup navidrome I was clearing out duplicates and flo would stick on the songs that were missing rather than just advance. I cleared missing songs in navidrome itself but while testing some updates today (without the change) I found a song I didn't want in my library and deleted it from the server. Of course Flo picked it for shuffle and I was able to reconfirm it gets stuck. I apologize, I should have been more clear in what I was explaining. I've got the build with the update for missing songs on my phone now and I'm testing it tonight and tomorrow during work to make sure everything plays nicely. I've moved some random tracks to a folder outside navidromes media directory to test it with. |
…w as paused and will skip after 2 seconds. This fixes the issue of the user getting stuck on a song when it fails to load.
…7 on iPads and iPhones of all sizes using an iPhone 13 Pro Max (iOS 27) and the simulator.
…hen it is not pulled up.
…rView background continued to show when on the LyricView. This syncronizes LyricView with PlayerView so they behave the same.
|
Done. PlayerViewThis rounds the top corners, extends the background so it fills the screen on all devices, pushes the bottom button bar up using the safe area, fixes the wrapping and contained text for the AirPlay button, and changes some items to dynamic placement and/or sizing. Animations were added to dismissing, failing to dismiss, and adjusted for opening. The rectangles used for a drag handler has been replaced by proper drag handlers. The goal was to give it a more polished feel and fix some quirks I noticed while using flo. FloatingPlayerViewThe sizing is dynamic improving the look on iPad. The placement is dynamic fixing the overlap of the tab bar on Max devices and behaves consistently between devices of all sizes. LyricViewConverts the lyric view to a persistent screen rather than a temporary one. The chevron has been removed and a drag handler added. The lyric view can now be dismissed just like the player view and has condensed playback controls and called back the same way. Text spacing has been increased and a blur added (iOS 18+). This helps draw the user's eyes to the proper line. The blur progressively intensifies for 6 lines in either direction of the current line. Scrolling deactivates the blur. After a brief wait the blur is reapplied and you're returned to the current line. The blur is not applied when paused. Blurring is not applied to iOS 16/17 because I couldn't get scroll tracking to work in a way that was compatible with them. I also attempted to handle additional cases of missing lyrics causing the "Failed to load lyrics" to show on screen. However, some instrumentals still show the error message instead of "No lyrics available". While I can't deny, I do like this the most and think it looks amazing, it really does help improve where your eyes are drawn to on the screen. For users like myself who love lyric view a lot this is a phenomenal change. PlayerViewModelAutomatic song skipping kicks in when a song is missing from the server (deleted). If a song is taking a while to load it will still play normally. This fixes a quirk I had while cleaning up duplicates in my library, flo would be stuck on the song despite identifying it had already failed to load. TestingI've tested this on an iPhone 13 Pro Max (personal device) on iOS 27 beta 5 and on various devices of all sizes. Below are the models tested in the simulator. iPhone
iPad
Known Issues
DifferencesThe playback controls and progress bar on the LyricView have been swapped to match the PlayerView and the format is displayed now as well. The player view can be seen peeking out from the bottom of the screen when viewing the library on the iPad Air 11” 18.6 screen shot. That has been fixed in commit 60c41cb. ScreenshotsNot all tested devices are included below. |

















Looks like Xcode didn't push to the proper branch (could be my fault) so it's not as structured as I attempted to make it.
When dismissing the FloatingPlayerView it will now ease out and spring back if failed to dismiss. Adds spring animations for the PlayerView when dismissing and failing to dismiss.
Fixes the location where the FloatingPlayerView is located. Uses safe area instead of fixed heights.
Bottom button bar AirPlay icon text is now one line and visible instead of two lines and cut off.