This chapter has the potential to be the most valuable for designers wanting to start along the path of iOS app design. It is common practice for companies to develop websites with split teams of designers and developers. While it may not be obvious, one of the reasons teams can split this way is because the web designers understand how websites work. Designers are familiar with the tools at a web developer’s disposal. They know how links work; they know they need to worry about hover state versus clicked state. They know how a drop-down menu and asynchronous page-load should function.
For iOS, however, this is not yet the case. To design apps for the iOS, is it essential to have a deeper understanding of how the user interface works than can be grasped by simply playing with your devices. The designer needs to know the tricks up a developer’s sleeve and what can be accomplished in iOS. By the end of this chapter, you will have the same behind-the-scenes knowledge of key aspects of the iOS. We will outline the building blocks of iOS UI and walk through some of the fundamental frameworks used when creating iOS apps.
UIKit and Foundation
Remember that Cocoa Touch contains the UI layer of iOS. The architecture of Cocoa Touch can be broken into two primary base frameworks, UIKit and Foundation. UIKit is your one-stop shop for UI elements, hardware interface, and event handling. Because this book deals primarily with user experience, we will focus on UIKit. But you should at least be aware of the role Foundation plays in the iOS environment.
Foundation provides iOS a base layer of operation, defining NSObject (the root of all objects in iOS) and basic data types such as NSArray, NSDictionary, and NSStrings. The goals of Foundation, as defined by Apple’s developer documentation, are to
- Provide a small set of basic utility classes
- Make software development easier by introducing consistent conventions for things such as deallocation
- Support Unicode strings, object persistence, and object distribution
- Provide a level of OS independence to enhance portability
Notice from our “Hello, World!” app in the Part I iOS App Blueprint that UIKit and Foundation were automatically included in the headers of our classes. This is because when we created our project, we chose New iOS App. Xcode knows these frameworks are required for iOS, so they are included by default.