The months leading up to Apple’s annual Worldwide Developers Conference (WWDC) are often rife with speculation. The big story this year was an expected overhaul to the look and feel of iOS due to the public ousting of Scott Forstall, the former Senior Vice President of iOS at Apple. Whether this shift was due to reported friction between department personnel, public criticism of the skeumorphic design principles used throughout iOS, or the infamous “maps flap,” Apple decided to shake things up by having Sir Jonathan Ive lead their human interface design efforts. While I personally admire Ive’s approach to hardware design, I wondered whether he could successfully apply his hardware design skills to software. Well, this year’s conference has finally wrapped up and the stories turned out to be true: Apple completely redesigned the iOS user interface, touting it as the biggest change to iOS since the iPhone was first introduced in 2007.
Whether the change is for the better remains to be seen. Public admiration and outcry have been heard far and wide, and while I have my own praise and criticism, it is unfair to analyze a beta interface that has a strong likelihood of changing in some way before the final release. As such, we’ll leave that discussion to those who only have an interest in the end user experience. Being involved in iOS application development, I’m interested in what the user interface changes mean to me from a software design perspective, so I’ll be focusing on that as well as a few of the technical changes introduced in iOS 7 that apply to the type of work we do here at Segue.
Modifying Current Apps and Designing for the Future
iOS 7 is so visually different than its predecessors that apps will need to be designed specifically for it. Navigation bars, alert views, action sheets, tab bars, segmented controls, switches, sliders, default buttons, and picker views have all changed, and you will most likely find that existing app designs will have to be reworked around these changes. Navigation bars can be transparent and blurred, as well as the status bar and tab bars, so view controllers must be sized accordingly to take advantage of this. Grouped tables are now full screen width and open up space for additional cell content. Default buttons are borderless and may need some tweaking to fit visually within a current design. In addition, iOS 7 introduces dynamic text which allows the designer to set text elements and have the user decide how big or small they would like it to be. The text scales gracefully without becoming too thick or thin as it increases or decreases in size.
Xcode 5, the next version of Apple’s integrated development environment, will offer some enhancements to interface builder that should make it easier to support both iOS 6 and iOS 7 simultaneously. If you haven’t already embraced auto layout, now might be the time to do so, as it allows the developer to arrange visual elements and test for compatibility across all screen sizes and OS versions by clicking a button or two. This should keep everything wrapped up nicely in one storyboard.
Since inception, iOS has not supported true multitasking on its devices. Instead, Apple allowed a handful of processes to occur in a background state, and some only for a finite amount of time. Certain tasks like background audio, voice over IP (VoIP), and location monitoring could run continuously, but other application tasks would have a certain amount of time to complete their processing when the app was put into a background state before the app became dormant.
With iOS 7, Apple has changed things somewhat. While there is still not true multitasking in the sense that you or I might understand it, they have increased the number of tasks that can be performed in the background. They modified the app switcher, so users see a screenshot of their app’s current state in a cover flow type of format. Background downloading and processing can occur when the device is in an awake state, and push notifications can now silently wake an app in the background to perform additional processing. This eliminates refresh lag when the user begins using the app again and, coupled with the ability to update the app switcher screenshot, provides the illusion that the app is always running in the background.
Some really nice functionality has been added to Core Location in iOS 7. Background location updates can be deferred, which means GPS updates are queued while the device is asleep and can be set to wake the device and notify the user at set intervals. This could lead to significant battery savings. In addition, geofences can be selectively monitored, so developers have the flexibility to notify a user only if they enter or exit a region.
A very exciting new feature is support for iBeacons and beacon regions. iBeacons are basically transponders that broadcast proximity information via Bluetooth LE. They can be used in museums, along transit routes, in shopping malls, etc. iOS apps can be made to listen for and respond to the signals received from these beacons. For instance, in a museum, as you approach an exhibit ,your museum app could display content relative to that particular exhibit. If you are in a cafe, your app’s transaction view could display once you get close to the register. Apple plans to allow iBeacon production by third party manufacturers, but iOS devices can also be turned into iBeacons, for example an iPad based point-of-sale system.
Map views have a new look in iOS 7. Streets are easier to see now that they have more contrast. One of my biggest complaints about Apple’s maps was that I just couldn’t see streets well enough, even after zooming in. Hybrid mode has changed and appears to lean more toward satellite view with streets showing names, rather than heavily defined graphic paths. Location pins have become slimmer and less intrusive while still retaining their original size. Callout views are now flat and white, keeping with iOS 7’s overall appearance, and tint color can be applied to the map view, cascading down to user location and callout views. One very welcome addition is the ability to automatically display a map region based on a collection of annotations. If you have an array of annotations, you can now tell iOS to show all annotations and the region is automatically calculated for you. Another new addition is the introduction of geodesic polylines. While seeming more like eye candy than anything, you can now show route paths as a curved line, showing flight paths “as the crow flies.”
The most welcome change to Map Kit in iOS 7 is the new directions API. It is now possible to show route directions in-app, without having to hand off processing to the built-in maps app or a third party solution. The new directions API offers driving and walking directions, alternate routes, estimated time of arrival, distance to destination, geometric polyline routes, and turn by turn directions. Local search is available and both the search and directions APIs have no usage limits.
For web and mobile developers who use web kit, Apple has introduced new layout models. Columns and pagination allow easier breakup and viewing of content. Lengthy content usually involves a lot of scrolling to read everything in one long column. Now content can be broken into multiple columns and paginated, so reading the material is similar to reading a book. Dynamic type can be used in web views so content can reflect user settings on the device automatically and fonts now have kerning and ligatures enabled by default, resulting in greater legibility.
If you’ve ever created custom controls for media players, you’ve noticed that you did not have the ability to send content via AirPlay to an external device. iOS 7 contains an AirPlay API for videos with custom controls, so that will no longer be a problem for you.
The Wish List
While iOS 7 does indeed contain some exciting new features and enhancements, there are a few things I wish it included. For starters, many people have been asking for a Siri API, but perhaps Siri needs a bit of work before it makes sense to implement one. Siri has been known to get a bit overwhelmed at times, and I could only imagine how it’d handle app integration. I would also like to have seen some native graphing and charting tools. It’s hard to believe that we’re up to version 7 and still don’t have built-in support for engaging graphs and charts.
It’s often been said that if you build it, they will come. In one of my previous blog posts, I mentioned the high rate of iOS adoption, but I’m not so sure about iOS 7. Many iOS users really like things as they are and may be unwilling to change. If we, as developers, put a lot of effort into redesigning our apps for the new look and feel and adding in functionality that is limited to iOS 7 only, will we see a return on that investment? What if only 50% of users decide they want to upgrade to iOS 7? I only pose this question because after testing the iOS 7 beta for a few weeks, I’m honestly on the fence about it — and I have never hesitated over an upgrade before. But as I said initially, a lot can change between now and the final release, so only time will tell if Apple has another winner on its hands.