User Experience Starting Point
User experience encompasses the visual appearance, interactive behavior, and assistive capabilities of software. The look and feel of your application is often as important as its feature set.
For example, an application with a great user experience should:
Embody user-friendly design principles
Have a professional, consistent look, with quality icons and graphics
Support alternative input devices for users with disabilities
Before you design a user interface or write any code, it’s a good idea to become familiar with the range of OS X technologies that influence the user experience. Many of these technologies are described in Mac Technology Overview.
Interface Builder is Apple’s graphical UI editor. To learn to use Interface Builder to edit the UI of an app, read “Designing User Interfaces in Xcode” in Xcode User Guide.
All OS X developers should be familiar with Apple’s human interface guidelines for OS X. Read OS X Human Interface Guidelines to learn about the design principles that underlie all user-friendly software and the OS X user interface features that your application can take advantage of.
To become proficient, you need to know how to implement the most important UI elements, such as windows, menus, and controls. Window Programming Guide explains how to implement windows, dialogs, and panels; Application Menu and Pop-up List Programming Topics explains how to implement menus. For information about sheets, read Sheet Programming Topics. Control-specific programming topics (such as Button Programming Topics) describe how to implement specific controls.
You may also want to became proficient in Apple style and usage and to familiarize yourself with accessibility topics. Apple Publications Style Guide lists style and usage of Apple terms, including user interface terms that should be used in applications.
Accessibility Overview for OS X walks you through several accessibility topics. Most commercial applications must have user interfaces that support alternative input devices, such as screen readers, Braille keyboards, and so on, for users with disabilities. Making your user interface accessible also allows you to use the accessibility API to run automated UI tests.
ButtonMadness demonstrates how to use the various types of buttons both using a nib file and programatically.
SpeedometerView shows how to make a custom view that can respond to mouse clicks.