In iOS app development it is imperative to get animations right. No question about that. Otherwise your app will look ugly and out-of-place. But debugging animations and transitions can present some headaches.
For the non-developers reading this: debugging is the act of examining the app with special tools to pinpoint problems. It usually involves slowing down or even stopping the program execution to the point where the developer can check and see how things are going.
For my custom animations I usually slow down the speed to check that everything is happening according to the choreography I have in mind. But there are a few places where I simply can’t do it. Case in point: navigation controller pops.
As I implemented search in my Mark II Artist’s Viewfinder app, I had a feeling that’s something goes wrong when I select a camera in the search results list and the navigation controller moves back to the virtual camera configuration screen. Something seemed to be under the search bar during the animation, but 0.3 seconds was hardly enough to see it.
Like in love – all is fair in debugging. So I picked up an iPhone 6 from our test device pool and recorded my 6 Plus’ screen during the animation – in SLO-MO mode at 240fps.
You can see a frame from that video on the left – and no, nobody will laugh on you when you record movies in portrait orientation for debugging purposes…
It’s noisy crap because it was recorded during Thursday evening, with the only light source in the room besides the phone’s screen itself being my monitor.
The search screen goes away horizontally to the right, and the keyboard slides down. There are some motion artifacts in the direction of the movement, but you can clearly see part of a second copy of the search bar under the real one (top right corner). This was due to not taking the status bar’s height into account when positioning the snapshot used to persist the search display controller’s image during the animation.
Bottom line: the iPhone 6′s high speed recording capability is something I will utilize more often for debugging.