I haven’t written much about my iPhone app, but now that I have some time on my hands, I’ve put some more time into it.
I’ve been watching the Stanford iPhone course on iTunes U. They had a couple of successful iPhone app developers come in to give lectures, which were very useful. One of the things that stuck with me was an insistence that you prototype the user interface. They recommended sketches, but my sketches are horrible so I decided to try Photoshop. I grabbed this Photoshop template which is really great except it’s missing some important UI elements, like the symbol that looks like a “Do Not Enter” sign that iPhone apps use to indicate “delete this element”. In spite of that, I managed to mock up some screens, get some feedback, try running through a few scenarios, etc. You can see my current iteration on my gallery. Keep in mind that I don’t think I’ve got the correct fonts or font colours for the standard iPhone UI, but I mostly did it for looking at layout and program flow.
As well as that, I was working out the data storage, including the SQLite tables and stuff. I was trying to figure out how to get the lazy load the data and only keep what I need in memory. That’s when I started reading about the 3.0 software and the Core Data API. It seemed like exactly what I need, so I paid my registration fee and downloaded 3.0 to see if it will be as useful as it appears. One unfortunate side-effect – all the code I’ve typed in from the iPhone book I’ve been working through has tons of “setText is deprecated” warnings. Oh well.
Paul, I looked through the gallery and the application looks interesting. My only concern is that on some of the screens the lines look like they are very close together. In particular, there were some delete buttons that were very close together. The user interface guidelines suggest a minimum height of 44 pixels for a touch target.
One of the hardest parts of making an iPhone user interface is making everything BIG. I sketched out all of my original screen layouts, but I had to rethink everything once I started actually building the application and I realized how little you could actually put on one screen. I did all of my initial development using the iPhone simulator and I was surprised how much smaller everything was when I finally purchased a real iPhone.
I don’t know of you have a copy of OmniGraffle. It is a drawing program that was bundled with some earlier versions of the Mac. You can download some iPhone templates that allow you to lay out the user interface. I have not actually used it, but I have played with it a bit. You can also simply use Interface Builder to play around with different layouts.
One thing that I constantly struggle with is how to add new functionality without complicating the user interface. In a system with a menu system, you can simply add a new menu item for new functionality. Without a menu, it is really hard to add specialized functionality. On the positive side, it forces applications to focus on simplicity. On the negative side, it is hard to say no to feature requests that are quite interesting, but if each one adds a bit of complexity to the user interface, you quickly end up with something that is overly complex.
I have had a few comments that users find my iPhone version of CoPilot less intuitive than the Palm version. In many respects they are correct. You can put less on one screen, so it is harder to get the big picture.