iOS Now Playing View Similar To Music/Spotify App - ios

I am trying to figure out how to create a "Now Playing" view similar to the one in the Music app and the Spotify app.
Here are a few images of what I'm trying to re-create:
Creating the view is not the problem. The part I'm having trouble with is how to keep the view on the screen at the bottom with the now playing information on it, but then when clicked, flicked, or swiped up, make it show like a modal.
Is this something that can be set up in Storyboard, or is it completely custom? How would you set this up?
Thank you in advanced for the help.

My guess is for Spotify it's custom as their implementation predates storyboards being... I'll use the term "friendly" to 3rd party developers.
However if you're building with the latest Xcode and iOS SDK this should be fairly easy to accomplish by building a container view controller wherein the child view would be everything in the upper quadrant, and you would effectively make that parent viewcontroller (with the now playing view area on the bottom) the root view controller.
As for the flicking / tapping, that's probably just a typical gesture recognizer that loads a modal. I can't recall if Apple's implementation is panning, but Spotify's is. My guess with them is as you as you tap down they load a new VC that's mostly obscured off screen and that's what actually gets panned in.

Related

Organizing my first iOS app's UI

I'm making an app for my Independent Study, and I have a UI functionality in mind - I just don't know how I would go about implementing it.
It's very simple in theory.
I want to have an initial view that fills the screen. When the user swipes up from the lower middle part of the screen, I want to do something that acts similar to control center, but for it to be a view that allows for me to choose between each of the 7 days in the upcoming week, displayed as icons with tags, and the user can swipe through them similar to how one swipes through the pages of apps on the home screen.
Similar to control center, the view should animate by sliding in from down to up, take up only part of the screen (In my case, about 1/5 of the screen as opposed to control center taking up more than 1/2) and the view behind it should of course remain running.
I am a beginner with iOS trying to get on my feet.
My question really boils down to this: I am unsure of what View class to use in interface builder for this, and whether or not this requires a segue/new view controller.
My initial thought was to drag and drop a View into the top level view, set its boundaries to how I want it to end up, then set it to hidden until I handle a swipe up, at which point it animates by sliding up.
I have done my best to describe my question but I am willing to clarify further if needed.
You can use 2 scenes in StoryBoard.
One as the mainView and one as the controlPanel.
Design as you like. You can detect user calling it by using UISwipeGestureRecognizer. And call the segue to that controlPanel scene.
On the controlPanel scene, you should set the backgroundColor to clearColor, and add another UIView on it with blackColor and alpha 0.5f.
To present it above the mainView, use modal presentation.

Toggling what is viewed when using an app

I am fairly new to swift and iOS programming, and I've been watching video tutorials of people making things visible and not visible. When it comes to large scale projects I am start to doubt that they have one million features toggling between visible and not visible on the tiny screen.
So my question is, is I am making a tiny app how do I transition from basic view such as logging into a game and changing the login view to actually ingame. How do these type of things work?
What you're asking is the basics of programming on Apple platforms. This can't be simply explained in a single answer. Please, start reading this tutorial from Apple to get the understanding of the MVC concept and storyboards.
In short. You use the storyboard in Xcode to build your screens. Each screen is a scene in your program and represents a view controller. The view controller organizes how data is displayed on a screen and how to react to user input. You can create view controllers in code in Xcode and link these to the scenes (that are also view controllers) in the storyboard. In the code you can program the behavior of the different views that you put in each scene. Moving from onze scene to another is done with segues.
A segue can be made programmatically, you drag iT from onze view controller to the other. Or, in the storyboard boy dragging it from, e.g., from a button to the next view controller. You give the segue na identificeren and in prepare for segue (a method) you can program what data needs to be transferred from the existing to the destination view controller.

How to get UIVisualEffectView to blur without going OVER full screen / current context?

I have a SpriteKit game where I want to blur only a part of the screen (the board where the game is played). But at the same time, I want to be able to interact with the other elements (like UIButtons) on the screen. So basically I'm looking for something like a form sheet, but one that blurs what is under it and allows interaction with the main view controller.
So here's my problem. I've tried to:
put the UIVisualEffectView on my main view controller,
present another view controller modally with one of the standard presentation styles and have the UIVisualEffectView in there, or
present another view controller modally OVER full screen / current context and have the UIVisualEffectView in there.
None of these options work for me.
Options 1 and 2 don't actually blur. They produce a solid black box instead. (Although for some reason it blurs when I get a notification or when I pull down Notification Center or pull up Control Center. So I'm facing the same problem as this user.)
Option 3 does blur, but does not allow for interaction with the main view controller.
Does anyone know what else I could try? Or am I not using something correctly?
Unfortunately UIVisualEffectView simply doesn't work well with SpriteKit, even when using SKView. I've tried everything from A to zPositions.
I decided to recreate my UIButtons in the new view controller and present it modally OFS. That way I have access to the beautiful UIVisualEffectView blurring (SKEffectNode blurring isn't pretty at all IMO) and to my buttons. I hope Apple will work on the synergy of their frameworks in future versions of iOS and Swift. Then again, I'm not exactly an expert when it comes to app development, so if there is anything else I could've done I'd love to hear it :-)

Design Method for iPad App

I am working on the initial stages of an app and would like to employ the design implemented in lynda.com’s app for iPad. My question is what design patterns are they using to create the Playlist table on the left hand side which flies in from the left when the scene appears? I’m guessing it’s a view with a tableview that is added as a subview to main screen. The reason I’m trying to use something like this is to move away from the SplitView paradigm so I can have more screen real-estate for the right hand side of the screen. See screen shot below.
Thanks.

iTunes style modal view controller chain (form sheet)

Is there a way to achieve the iTunes style modal view controller chain (see screenshot)?
I've looked around quite a bit but couldn't find any real questions about this. I'm not looking for a replacement or workaround, just want to know if it is possible to do with the current SDK (or iOS 5.0, although we are not supposed to talk about it a simple Yes/No would suffice).
For those who can not make it out from the image; iTunes on the iPad has this great feature where you can view a movie in a formsheet style modalviewcontroller, and if you click on another movie in that same modalviewcontroller it will create a new modalviewcontroller with the movie info you clicked on and will slide the 'old' one out (to the left). It will slide back in when the center modalviewcontroller is dismissed.
UPDATE:
I'm sure it has been done before, but I wrote my own implementation. It turned out not to be very difficult, although it misses some context-animations (like the flip from position), it is pretty usable. Since I wrote it for iOS 5, I will make the code public this fall when the NDA is lifted.
I suspect that it's a single modal view controller with a scrollview. The scroll view has a semitransparent background and displays several "pages". If you take that approach, I can't imagine it being too difficult to implement.

Resources