iOS design: a case study CocoaHeads, Antwerp, March 26th 2012
I would like to give some context to this presentation. These slides are from a 30 minute presentation called iOS design: a case study.
If I make presentations, some slides only contain a few words or images so the slides won’t distract from what is being said. This “web” version contains sticky notes (like this one) that summarize what I talked about when displaying the slide during the original talk.
iOS Design: a case study is about how we built ConcertWall. Kristof, developer Johan, interface designer @ahigherugliness @wolfr_
Let’s go through the process of designing ConcertWall, from initial brief to final result.
So this is my company’s website, ( http:// wolfslittlestore.be/ ). Notice how the graphics on the homepage are @2x retina :) Under work you can see what I do: interface design, web design, branding and identity, HTML & CSS, photography and design for mobile devices. Companies evolve and this is actually a little bit outdated - I specifically want to focus more on the interface design part. The next website will reflect this!
Design for mobile
Design for mobile These days I design a lot of interfaces for mobile: iPhone, iPad, Android, Windows Phone 7 or for custom hardware.
First iPhone owned: iPhone 3G Number of iPhones owned so far: 3 Favorite application: Tweetie (original) Most used application: Reeder Number of apps currently on iPhone: 104 Number of iPhone apps designed: 4 Number of iPad apps designed: 2
First iPhone owned: iPhone 3G Number of iPhones owned so far: 3 Favorite application: Tweetie (original) Most used application: Reeder Number of apps currently on iPhone: 104 Number of iPhone apps designed: 4 Number of iPad apps designed: 2 I’ve always used an iPhone as my primary phone since it came out, now on my third one. Out of all platforms it’s my favorite one to design for.
Initial brief • Redesign of existing Last Concerts iPhone app • Design of extra functionality to be added • Website: add polish
Proposal • Complete redesign and rebranding of Last Concerts iPhone app • New marketing strategy: new website & app icon • Further ideas: great iTunes copy, offline ads (in concert halls)
This is the old app design. Notice how it doesn’t look too bad (albeit a bit standard) because the defaults Apple provided are excellent.
Wireframing & interaction design
To kick off the project we sat down with a giant sheet of paper. I bought a big roll of paper in the paper shop. Drawing together is one of the best ways to get to define what is going to be built.
Not going to bore you too much with this part, but of course before designing or wireframing anything you need to know: * Why are we building this, for who…? * What are the goals of people using the app?
On the train home I thought a bit about the marketing... the initial app name idea was “Gigfind” (rejected later). We kept the poster idea.
The next process was putting everything I learned in the wireframes. This is my style of wireframing where I put everything in a giant document. This one was made in OmniGraffle but recently I switched over to Illustrator for making these.
This is a detailed view of part of the wireframe. Notice the notes that outline my thoughts surrounding the screens I’m designing.
This is another template (by Teehan+Lax). I don’t use it personally but I included it here show the difference between the interaction design and visual design. A “sketch” style is used here to show that this part of the design is NOT about the visual. [http://www.teehanlax.com/blog/ipad- sketch-elements-ai/]
interaction design visual design
Another technique that helps to make the distinction is to make your UI elements gray and unappealing just to make sure you concentrate on the interaction design first. interaction design visual design
Sometimes it might make more sense to wireframe with a good kit of default UI and build a working app first, based on the default UI patterns. This is especially true when you are developing an app for Android, iPhone and WP7 at the same time. If you are doing client work, this will mean educating your clients, and possibly your boss too. The default UI can be implemented relatively fast and is 100% tested. Going custom is hard.
Visual design & user interface customization
Custom is hard. People always forget things.
I often hit this iceberg when I stray from native controls. For example, Ajax interactions require more polish than basic web pages. Custom mobile menus require more polish than the built-in version. If the team doesn’t have the time to polish custom UI, it’s often better to stick to the boring native controls that work. Braden Kowitz, Designer at Google
Very simple example: a dark interface
Let’s say you were to make a “dark” iOS interface. Maybe a developer would start with a simple grouped table view in Xcode.
You could set a new background color, but now your other UI elements don’t match the background.
You can now go look for ways to customize the other UI elements. In OS5 some interface elements can be given a “tint” color.
There are tutorials out there that show you how to change the default UI completely. The end result of most of these tutorials is mediocre at best.
Even famous apps like Instapaper don’t implement a version that is 100% “right”. There is no default list view for dark interfaces in the iOS SDK, so a lot of iOS dev time is probably spent reinventing the wheel (i.e. coloring an existing UI element) The lines between items have too much contrast, the font for table views is supposed to be bold, and the frame of the table view should have more contrast. Kudos to Marco for implementing a dark table view when in Dark mode, which is a detail many apps would forget. I am using Instapaper as an example now but trust me, there are a apps out there that are a LOT worse. I <3 Instapaper and by many accounts it’s a leading example.
How to make a grouped table view thats fits right in? Start by looking at the one that Apple made. The key to a great iOS design is knowing the platform. Look carefully at how the default apps are built.
Work those details (not like this app). Non retina graphic Inconsistent language Non retina graphic Highlight text should be white Non retina graphic
In the end, if you want a custom design that is great, you’re going to need to implement your own version of certain UI parts using custom assets.
List item 1 List item 2 List item 3 This “dark UI” design works on any background - even disco style backgrounds (using PNG transparency to achieve this).
If what you are building can’t be built with the default UI elements take a close look at what the leaders in a particular field are doing e.g. FourSquare recently decided to switch over to MapBox for their maps. [http://mapbox.com/]
True business cost of customization: both UI elements took at least several hours & iterations to get right
It took me a while to learn how to handle forms on iOS. Take a close look at Calendar (add new event), Contacts (edit/add contacts) and Settings to get a good grasp on what to do. Web style form iOS style form (better!)
Test your design (!) Use Skala preview http://bjango.com/mac/ skalapreview/ by Bjango to view your design while making it. This should give you a better sense of what you’re doing than the huge retina PSD you are working in.
The Teehan+Lax PSD template is your best friend when designing for iOS. It’s an almost perfect representation of Apple’s UI elements in the form of a PSD. [ http://www.teehanlax.com/blog/ iphone-4-gui-psd-retina-display/ ]
Design: lessons learned
• Custom vs. native is a tough balance - stick to the standards where possible • “Coloring” UIKit makes more sense than re-inventing the wheel • Don’t think you can do better than Apple (unless you can invest the same time)
• Give your app personality through: • Splash screen • App icon • App content
• Don't try to give your app personality through: • Custom interaction design • Ignoring standards and good defaults (e.g. standard sizes of elements, 44px “touch” area)
Keep in mind that this is the size most people are going to see your icon at, I can only advise to use a simple glyph/form instead of a super detailed representation. Perhaps this design is still too detailed.
These icons are super clear and to me still look attractive:
Assets & specification
You can’t just deliver a PSD to a developer, there’s no way that’s going to work. This part of the presentation is about preparing assets and the way I try to communicate the design.
Here’s the assets for ConcertWall. Takes some work to export them all, especially crisp assets in both retina and non-retina versions.
I use some automator actions to make my life easier e.g. this does about the same thing as the Prepo app (convert @2x to @1x)
This action just adds text to multiple files, if you forget to add @2x to the names (like I always do :))
I write a spec for the developer in which I explain which images to use where, which fonts to use where etc. You can’t possibly describe the whole design but basic stuff like which asset belongs where is very helpful for a developer.
## Lists: thumbnails Use glow.png for the glow on last.fm images. * The thumbnails are 54x55 pixels * Use a black 54x55 thumbnail if no image can be found/images are still loading * When an image gets loaded, slight fade in animation would be nice This is an example of a “specification” for thumbnails in lists in the Concertwall app.
A design has to be communicated Merely sending the mockups is not enough.
The app I use to make these is called Mou (http://mouapp.com/), on the left side you write in Markdown, on the right side you immediately see your output. This way you can easily reference asset images directly in the spec. The app allows you to export to HTML and PDF, so when you deliver the spec to the developer he/ she can open it up in a separate window (e.g. on a second screen) and have it handy at all times.
Here’s a simple way to make a good looking iPhone asset for your marketing website: