Construct and manage a graphical, event-driven user interface for your macOS app.


AppKit contains all the objects you need to implement the user interface for a macOS app—windows, panels, buttons, menus, scrollers, and text fields—and it handles all the details for you as it efficiently draws on the screen, communicates with hardware devices and screen buffers, clears areas of the screen before drawing, and clips views.

The framework also provides APIs you use to make your app accessible to users with disabilities (see Accessibility); to learn more about localizing your app for different languages, countries, or cultural regions, see Internationalization and Localization Guide.


App Structure

Core App

Learn about the objects that you use to interact with the system.

Data Management

Manage your app's data through file access and Cocoa bindings.

Resource Management

Manage the storyboards and nib files containing your app's user interface, and learn how to load data that is stored in resource files.

User Interface

Your app's user interface provides visual, audible, and tactile feedback to the user about what your app is doing.

Views and Controls

Present and define the interactions for your content onscreen.

View Management

Manage your user interface, including the size and position of views in a window.

Menus, Cursors, and the Dock

Implement menus and cursors to facilitate interactions with your app, and use your app's Dock tile to convey updated information.

Windows, Panels, and Screens

Organize your view hierarchies and facilitate their display onscreen.


Make your app more accessible to users with disabilities.

Touch Bar

Display interactive content and controls in the Touch Bar.


Animate your views and other content to create a more engaging experience for users.

Drag and Drop

Support the direct manipulation of your app's content using drag and drop.

Sound, Speech, and Haptics

Play sounds and haptic feedback, and incorporate speech recognition and synthesis into your interface.

Event Handling

Mouse, Keyboard, and Trackpad

Handle events related to mouse, keyboard, and trackpad input.


Encapsulate your app's event-handling logic in gesture recognizers so that you can reuse that code throughout your app.

Graphics, Drawing, Color, and Printing

Images and PDF

Create and manage images, in bitmap, PDF, and other formats.


Draw shapes, images, and other content on the screen.


Represent colors using built-in or custom formats, and give users options for selecting and applying colors.


Display the system print panels and manage the printing process.


Text Display

Display text and check spelling.


Manage text storage and perform custom layout of text-based content in your app's views.


Manage the fonts used to display text.


NSAppleScript AppKit Additions

A method added to NSAppleScript to handle rich text source.


Functions and function-like macros for use with multiple classes.

Data Types

Data types for use with multiple classes.


Constants for use with multiple classes.


Enumerations for use with multiple classes.


class NSUserInterfaceCompressionOptions

An object that specifies how user interface elements resize themselves when space is constrained.


protocol NSUserInterfaceCompression

A protocol that describes how a UI control should redisplay when space is restricted.