Part I: The Reasoning and the Justification for breaking Apple's HIG
Whether you believe it or not, it's possible to make a good Hamburger menu for iOS, in Swift. 🎉
The humble Hamburger menu was very popular circa iOS 5 and 6. However recently, Apple have actively discouraged its use despite a lack of other nifty solutions.
Even so, fewer apps are using this method for their navigation, and more then ever are shipping with the bog-standard Tab and Navigation set.
The reason for that is simple. Apple have always encouraged iOS apps to dot the i's and cross the t's when it comes to adhering to the HIG.
"Dot the I's, and cross the T's." (Scribner’s Magazine, 1849)
Clearly, the rules exist for a reason.
Though having said that, rules are totally made to be broken right? It's fair enough if you just plain dislike cookie-cutter apps bedecked with the usual setup.
However, I must concede that this design will always have its valid uses. 😭
Enter the Hamburger menu. Done right, it almost obfuscates the navigation completely, but still makes it clear to the user there's something more to the app than just the first screen they land on. It brings the app's content and purpose to the foreground, leaving
sometimes often seldom used tab bar items hidden away until they're required.
Shortly before Christmas in 2015, we at jTribe began to iron out a navigation paradigm for our top secret new project. We looked at the standard iOS app solution for this and decided against it. The requirements of our app, paired with that navigation paradigm, would've resulted in a terrible, fear inducing UX.
TL;DR: We settled on the Hamburger. Even against Apple's
rule recommendation. I also decided to write it from scratch.
In a weird way, the decision almost felt like it was destined, considering the fact that Huxtaburger is a regular haunt of ours on a Friday.
I know there are dozens (if not hundreds) of drop in libraries on GitHub that I could've picked from, but being the Swift purist that I am, I didn't really want to drop a large chunk of unfamiliar Objective-C code into this new project.
Doing that always has its upsides and downsides. On one hand, you're done in <10 minutes if you use CocoaPods, Carthage or drop the files in manually, kicking it old school. On the other, you'll spend countless billable hours figuring out how it works, and undoubtedly debugging issues with it across the entire life of the project.
In the worst case, you'll be metaphorically beating the code with a hammer, so as to make it do what you desire.
Writing it myself was clearly a better (and safer) choice. I wrote what I needed, while leaving it easily modifiable and extensible for future applications. What I didn't need, I simply didn't include.
But I did need this:
DOHamburgerButton by OKUMURA Daiki - ありがとうございます 🇯🇵
Let's get cracking and write somethin'