I have faced with a really philosophical question here. Imagine I have a one design of an app that looks magnificent on iOS 7 and relies heavily on standard UIKit elements. The famous "Facebook-like" UINavigationBar you see everywhere in today's apps, with gorgeous blur effects, a great UITabBar with blur as well, and the whole feel and look of flat design.
What would be the best way to port such a look to iOS 6? Using UI7Kit might be an option, but it wouldn't save us from the '20-px status bar issue' and might be buggy. Using custom UIControls (actually 2 of them - one for iOS6 and another for iOS 7) is well, quite a heavy thing to manage.
So what is the best way out of this?
2 Answers 2
It all depends on how much resources you can put into support for legacy. This is always where these questions come to.
Ultimately, however, taking into account the quick adoption rates of iOS versions in general, and iOS7 in particular, I would first and foremost suggest supporting iOS7 and making sure everything looks great there. If you focus your use on native UIKit widgets, the backporting should not be as difficult. True, you would still have to worry about issues like '20-pt status bar issue', but a lot of those can be fixed, or at least greatly minimized, using auto layout and developer tools.
Using something like UI7Kit is interesting. I think most of all, it is a philosophical question. If you are planning a relatively native look and feel on iOS7, should you take your users completely out of native with a new look and feel? Remember, just as the legacy look and feel is completely out of place in the modern look and feel, so is the other way around. Consider someone who has a device that cannot be upgraded to iOS7. This individual has not made a conscious choice not to upgrade - he cannot. This interface would be very odd. On top of this dilemma, from experience, utilities like UI7Kit work great until you hit a specific case where they don't and you are left with either having to fix something yourself, open an issue and hope for a resolution or having to change your design to suit technical limitations. You mention that you find managing two custom controls heavy, this would be something to consider as "motherload". This is in no way to dis what has been done in UI7Kit. I think the project, from a purely technical standpoint, is very interesting and fun to watch develop. It's just that it is also quite complex, and a lot of functionality is still missing.
To summarize and give my opinion, I think I lean toward offering as native experience to both worlds as possible, while concentrating development effort toward iOS7. Historically, iOS adoption is two fold. The largest bulk install a new version of the OS soon after release. A second, considerably large bulk of people install the new version once a jailbreak is available. At any rate, after six months, you are looking at upwards of 80 percent marketshare of the new OS.
1 Comment
20px status bar workaround with UI7Kit
- Select view controller in interface builder.
- Check 'Use Full Screen (Deprecated)
- Uncheck 'Under Top Bars'
- Uncheck 'Under Bottom Bars'
If you don't use interface builder, try same thing in code.
After this change,
- Your view controllers have iOS6-like navigation bar and tab bar behavior unless you have navigation bar
- Your view controllers don't reserve statusbar area without any navigation bar. You can fit it for fullscreen now anyway.