Modality creates focus by preventing people from doing other things until they complete a task or dismiss a message or view. Action sheets, alerts, and activity views provide modal experiences. When a modal view appears onscreen, the user must make a choice by tapping a button or otherwise exiting the modal experience. Some apps implement modal views, such as while editing an event in Calendar or choosing a bookmark in Safari. A modal view can occupy the entire screen, an entire parent view, such as a popover, or a portion of the screen. A modal view typically includes completion and cancel buttons that exit the view.
Minimize the use of modality. Generally, people prefer to interact with apps in nonlinear ways. Consider creating a modal context only when it’s critical to get someone’s attention, when a task must be completed or abandoned to continue using the app, or to save important data.
Provide an obvious and safe way to exit a modal task. Make sure people always know the outcome of their action when they dismiss a modal view.
Keep modal tasks simple, short, and narrowly focused. Don’t create an app within your app. If a modal task is too complex, people can lose sight of the task they suspended when they entered the modal context. Be especially wary of creating modal tasks that involve a hierarchy of views because users can get lost and forget how to retrace their steps. If a modal task must contain subviews, provide a single path through the hierarchy and a clear path to completion. Avoid using Done buttons for things other than completing the task.
Display a title that identifies a task, if appropriate. You might also provide text in other portions of the view that more fully describes the task or provides guidance.
Reserve alerts for delivering essential—and ideally actionable—information. An alert interrupts the experience and requires a tap to dismiss, so it’s important for people to feel that the intrusion is warranted. To learn more, see Alerts.
Respect notification preferences. In Settings, people specify how they want to receive notifications from your app. Abide by these preferences so they aren’t tempted to turn off your app’s notifications entirely.
Don’t display a modal view above a popover. With the possible exception of an alert, nothing should appear over a popover. In rare cases when you need to present a modal view after action is taken in a popover, close the popover before displaying the modal view.
Coordinate modal view appearance with your app. A modal view may include a navigation bar, for example. When this is the case, use the same appearance as the navigation bar in your app.
Choose an appropriate modal view style. You can use any of these styles:
Full screen. Covers the entire screen. Use for a potentially complex task that can be completed within the context of the modal view.
Page sheet. Partially covers the underlying content on larger devices held in landscape orientation. All uncovered areas are dimmed to prevent interaction with them. Covers the entire screen on smaller devices and in portrait orientation. Use for a potentially complex task that can be completed within the context of the modal view.
Form sheet. Appears centered on screen, but may be repositioned if a keyboard is visible. All uncovered areas are dimmed to prevent interaction with them. May cover the entire screen on smaller devices. Use for gathering information.
Current context. Appears at the same size as its parent view. Use for displaying modal content within a split view pane, popover, or other view that is not full-screen.
Choose an appropriate transition style for revealing a modal view. Use a transition style that coordinates with your app and enhances the awareness of the temporary context shift. The default transition vertically slides the modal view up from the bottom of the screen and back down once dismissed. The flip-style transition appears to flip a view horizontally to reveal the modal view. Visually, the modal view looks like the back of the current view. It flips back once dismissed. Use consistent modal transition styles throughout your app.