Gold Master version rained upon us few weeks ago and we have been through traditional new OS release chaos. Neglecting good night sleep in favour of making our apps behave as expected on buggy new OS. This seemed to have been somewhat more demanding then a year ago, but it might be just me being whiny little b**** and forgetting how demanding it was last year. If you indulge me I’d like to reminiscent for awhile. If memory serves me right it was shocking change. Complete redesign of apps was is order, flat design arrived. iOS 7 was buggy as hell on launch but our apps for the most part carried on working as normal. Worse case was your app looked somewhat old, but if your business was dependent on having app that was stable(as stable as any app on iOS 7.0.0) and performing as before on iOS 7, there was not that much work to do. There was few moths before Apple started requiring builds compiled against iOS 7 SDK only.
Right so you had just finally released shiny new iOS 7 only app, embracing all the new technologies. Finally got to grips with auto layout. Spent summer by A/B testing and quickly iterating to improve performance of your app and business. WWDC came around and there was a lot of cool stuff announced, but majority of it did not really make sense for your app to embrace, at least not on day one. You were not going to rewrite your app in swift,
extensions did not really make sense for your app. Yeah there was some cool new UIViewControllers stuff but you did not need that just yet. So you though for the most part you were in the clear, right ? Wrong ! As GM dropped you realised (if your app uses photos) that camera roll disappeared. Yeah there is new whole new Photos framework, but its iOS 8 only and its not like you can drop iOS 7 support on day one. Sticking with ALAssetLibrary will mean that users will not have access to all the photos they can see in their Photos app on iOS 8. That little detail was never announced or mentioned in WWDC sessions. That’s the reason why even apps like Facebook or Twitter or any app not using UIImagePickerController will not display all your photos at time of writing of this post. Only solution you have left is to hack the crap out UIPickerViewController and hope that it goes through review process. At this point you are also realising those weird layout issues were not bugs in iOS betas. Order in witch view controller life cycle methods are called has changed. This is causing problems with auto layout between iOS 7 and iOS 8. Also rotation handling APIs introduced in iOS 6 are already deprecated in 8. So you continue hacking around to make it all work. When seeing new iPhone sizes you are glad that you embraced auto layout, right until the point you actually see your app running at those new sizes.
At this point I’d like to stop being only critical and provide something constructive. Problem with auto layout, apart from being a bit buggy and inconsistent between releases and virtually incompatible with things like UIKitDynamics, is lack of “relative spacer constraint” with width relative to size of given view. This is important if you want make your custom UI element scale gracefully on variety of screen sizes we now have. Let me illustrate by example. Imagine that given design of your custom view it requires for redView’s to top (frame.origin.y) to be dependent on superview’s height. It requires not to be 80 points to top but 10 % of superviews height. To achieve this currently you need to introduce yellow “spaceView”, witch height is equal to the height of superview times 0.1 (using multiplier property of constraint). This might not necessarily make sense in this view but I have found myself adding vast number of these “spacer views” all over my custom views, in order to make UI doing sane thing on larger devices. Adding all these extra views is wasteful, messy and adds a lot of complexity when it comes to editing constraints. (Debug podcast episode discussing origins of AutoLayout with its developer @kongtomorrow). There might be good reason for lack of “relative size spacer constraint”, but it sure would make things a lot easier.
Exhausted, frustrated managed to get through iOS8 and iPhone release shanaganes, spending hours to getting build containing 100’s of hacks through freshly released iTunesConnect. Even managed to rant about the process in a blog post. With all that behind I can’t help, but thinking. Apple is racing ahead at full throttle. There is Swift to learn, making adaptive layout, new view controllers, extensions, bunch of other new important frameworks, ability to have frameworks list goes on and on. When you add it all up, changes to your code necessary to adapt for iOS 7 seem fewer then changes needed for iOS 8. Oh, and there this watch thing coming soon. I don’t know how about you, but that certainly is a party I don’t want to miss. So I soldier on, trying to keep up and it seems to be overwhelming. Do you know who else seems to be overwhelmed to me … Apple ! Earlier today they release 8.0.1 only to pull it back as it “bricked” touch id and cell reception on new iPhones. That’s a major cock up ! I sympathise with everyone at Apple as they muss be running flat out for some time. Apple has been criticised about it’s UI being dated and we got complete redesign last year. iOS has been criticised for lack of inter app communication, widgets, actionable notifications, iCloud issues. Objective-C got criticised for being old fashioned language. iPhone has been criticised for it’s dimensions. And lets not forget “Apple is doomed unless they release wearable”. So we got it all, in one year ! On top of that there is ApplePay. Many have tried and failed. Apple really seem to be only company that can make bank cards obsolete. Something I am tremendously exited about. Can’t wait to get rid of all the plastic cards and only ever cary my phone in a pocket and nothing else. It is astonishing and remarkable how much they were able to push out of the door this year and we are yet to see new iPads.
I understand that Apple has to look after it’s business interests. Releasing all these products and services and API changes and screen sizes changes was necessary for it’s business. Seer number of changes makes it hard for indie developers and smaller companies to look after theirs business interests while keeping up with platform. It feels like snow leopard like release is in order for next year. Please Apple take break, send your employes on holiday, it would be well deserved one. And let us catch our breaths for moment.
Links to interesting posts on topics discussed in this post :
- @_DavidSmith‘s developing perspective podcast episode
- Release notes podcast episode
- Core Intuition podcast episode