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. This chapter offers behind-the-scenes knowledge of key aspects of the iOS, outlines the building blocks of iOS UI and walks through some of the fundamental frameworks used when creating iOS apps.

This chapter is from the book

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.

The Foundation framework is an important part of the iOS development life cycle. If you are interested, I strongly encourage
you to read up on the amount of control this framework gives you. All of your simple data structures, such as arrays and dictionaries
(value-key paired arrays), are defined in Foundation. Additionally, Foundation defines utility functions for network operations
and XML parsing. Finally, while Foundation and iOS are primarily Objective-C objects and classes, there exists a toll-free
bridge to basic C representations of objects. This means you can move between the C and Objective-C representation of an object
without any impact on performance. Visit fromideatoapp.com/reference#foundation for more information on the Foundation framework.