I'm working on an app that, similar to the photos app, needs to utilize the whole screen for images. Right now I'm working on the behavior of having the status, navigation and tab bars disappear and reappear when the user taps the screen. I have it to work as needed, only problem is the pause before the disappearing animation occurs makes the user unable to push the buttons on the navigation bar and tab bar. Here is my code:

So the obvious solution is to create a thread that runs before the animation that sleeps for 5.5 seconds. Does anyone know how to implement this using grand central dispatch, or what would be the best way to do this? Or does anyone have a cleaner solution? I've read that it's not good to use sleep in GCD, and basically I don't have much thread programming experience and am a little confused.