Framework

UIKit

Construct and manage a graphical, event-driven user interface for your iOS or tvOS app.

Overview

The UIKit framework provides the required infrastructure for your iOS or tvOS apps. It provides the window and view architecture for implementing your interface, the event handling infrastructure for delivering Multi-Touch and other types of input to your app, and the main run loop needed to manage interactions among the user, the system, and your app. Other features offered by the framework include animation support, document support, drawing and printing support, information about the current device, text management and display, search support, accessibility support, app extension support, and resource management.

Topics

First Steps

About App Development with UIKit

Learn about the basic support that UIKit and Xcode provide for your iOS and tvOS apps.

App Structure

UIKit manages your app's interactions with the system and provides classes for you to manage your app's data and resources.

Core App

Manage your app's data model and its interactions with the system.

Resource Management

Manage the images, strings, storyboards, and nib files that you store outside your main executable.

App Extensions

Extend your app's basic functionality to other parts of the system.

User Interface

Views help you display content onscreen and facilitate user interactions; view controllers help you manage views and the structure of your interface.

Views and Controls

Present your content onscreen and define the interactions allowed with that content.

View Controllers

Manage your interface using view controllers and facilitate navigation around your app's content.

View Layout

Use stack views to lay out the views of your interface automatically. Use Auto Layout when you require precise placement of your views.

Animation and Haptics

Provide feedback to users using view-based animations and haptics.

Windows and Screens

Provide a container for your view hierarchies and other content.

User Interactions

Responders and gesture recognizers help you handle touches, keyboard input, and other events. Use drag and drop, focus, peek and pop, and accessibility to handle other types of user interactions with your content.

Touches, Presses, and Gestures

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

Drag and Drop

Bring drag and drop to your app by using interaction APIs with your views.

Pencil Interactions

Handle double-tap interactions that a user makes on Apple Pencil.

Focus-based Navigation

Navigate the interface of your UIKit app using a remote or game controller.

Peek and Pop

Use 3D Touch input to display custom previews and actions for your content.

Keyboard and Menus

Handle keyboard input, and display a menu of custom actions.

Accessibility

Make your apps accessible to everyone, including people with disabilities.

Graphics, Drawing, and Printing

UIKit provides classes and protocols that help you configure your drawing environment and render your content.

Images and PDF

Create and manage images, including those that use bitmap and PDF formats.

Drawing

Configure your app's drawing environment using renderers, and draw paths, strings, and shadows.

Printing

Display the system print panels and manage the printing process.

Text

In addition to text views that make it easy to display text in your app, UIKit provides custom text management and rendering that supports the system keyboards.

Text Display and Fonts

Use UIKit views to display text, manage fonts, and check spelling.

Text Storage

Manage text storage, and coordinate the layout of text.

Keyboards and Input

Configure the system keyboard, or create your own keyboards and handle input yourself.

Deprecated

Avoid using deprecated classes and protocols in your apps.

Property List Keys

Property List Key UIAppFonts

App-specific font files located in the bundle and that the system loads at runtime.

Name: Fonts provided by application
Property List Key UIAppSupportsHDR

A Boolean value indicating whether the app supports HDR mode on Apple TV 4K.

Name: Supports HDR color mode
Property List Key UIApplicationExitsOnSuspend

A Boolean value indicating whether the app terminates, rather than moves to the background, when the app quits.

Name: Application does not run in background
Property List Key UIApplicationShortcutWidget

The bundle ID of the widget that's available as a Home screen quick action in apps that have more than one widget.

Name: Home Screen Widget
Property List Key UIBackgroundModes

The services the app provides that require it to continue running while in the background.

Name: Required background modes
Property List Key UIFileSharingEnabled

A Boolean value indicating whether the app shares files through iTunes.

Name: Application supports iTunes file sharing
Property List Key UIInterfaceOrientation

The initial orientation of the app’s user interface.

Name: Initial interface orientation
Property List Key UILaunchImageFile

The name of the launch image file for the app on iOS versions earlier than iOS 7.0.

Name: Launch image
Property List Key UILaunchStoryboardName

The filename of the storyboard from which to generate the app’s launch image.

Name: Launch screen interface file base name
Property List Key UIMainStoryboardFile

The name of the app’s main storyboard file.

Name: Main storyboard file base name
Property List Key UINewsstandApp

A Boolean value indicating whether the app presents its content in Newsstand.

Name: Application presents content in Newsstand
Property List Key UIPrerenderedIcon

A Boolean value indicating whether the app’s icon already contains a shine effect.

Name: Icon already includes gloss effects
Property List Key UIRequiredDeviceCapabilities

The device-related features that the app requires to run.

Name: Required device capabilities
Property List Key UIRequiresPersistentWiFi

A Boolean value indicating whether the app requires a Wi-Fi connection.

Name: Application uses Wi-Fi
Property List Key UIStatusBarHidden

A Boolean value indicating whether the status bar is initially hidden when the app launches.

Name: Status bar is initially hidden
Property List Key UIStatusBarStyle

The style of the status bar as the app launches.

Name: Status bar style
Property List Key UIStatusBarTintParameters

The status bar tint.

Name: Status bar tinting parameters
Property List Key UISupportedExternalAccessoryProtocols

The protocols that the app supports and can use to communicate with external accessory hardware.

Name: Supported external accessory protocols
Property List Key UISupportedInterfaceOrientations

The interface orientations the app supports.

Name: Supported interface orientations
Property List Key UISupportsDocumentBrowser

A Boolean value indicating whether the app is a document-based app.

Name: Supports Document Browser
Property List Key UIUserInterfaceStyle

The user interface style for the app.

Name: User Interface Style
Property List Key UIViewControllerBasedStatusBarAppearance

A Boolean value indicating whether the status bar appearance is based on the style preferred for the current view controller.

Name: View controller-based status bar appearance
Property List Key UIViewEdgeAntialiasing

A Boolean value indicating whether Core Animation layers use antialiasing when drawing a layer that's not aligned to pixel boundaries.

Name: Renders with edge antialiasing
Property List Key UIViewGroupOpacity

A Boolean value indicating whether Core Animation sublayers inherit the opacity of their superlayer.

Name: Renders with group opacity
Property List Key UIWhitePointAdaptivityStyle

The app’s white point adaptivity style, enabled on devices with True Tone displays.

Name: White Point Adaptivity Style