Sheets

A sheet helps people perform a distinct task that’s related to the parent view without taking them away from their current context. For example, Mail uses a sheet to help people compose an email without leaving their mailboxes, and Translate uses a sheet to display a dictionary view that helps people define the word they want to translate.

A screenshot of an in-progress email on iPhone. A very small horizontal strip of the inbox view is visible above the top of the compose sheet. The keyboard is visible in the bottom half of the screen.

Mail compose sheet

A screenshot of the translation view on iPhone, showing the word hello in English and in Arabic. The dictionary sheet is visible in the bottom half of the screen, providing the definition of hello in both languages.

Translate dictionary sheet

For developer guidance, see UISheetPresentationController.

A sheet appears as a card that partially covers the underlying content. The card’s top corners are rounded to visually distinguish it from the parent view. You can customize a sheet’s corner radius to coordinate with the corner radii you use elsewhere in your app; for developer guidance, see preferredCornerRadius.

People typically expect to resize a sheet when they scroll its contents or drag the grabber, which is a small horizontal indicator that can appear at the top edge of a sheet. In iOS 15 and later, sheets resize according to their detents, which are particular heights at which a sheet naturally rests. The system defines two detents: large is the height of a fully expanded sheet and medium is about half the fully expanded height.

Sheets automatically support the large detent. Adding the medium detent allows the sheet to rest at both heights, whereas specifying only medium prevents the sheet from expanding to full height. For developer guidance, see detents.

By default, a sheet is modal, presenting a focused experience that dims the parent view and prevents interaction with it. After people finish interacting with a modal sheet, they dismiss it — or it dismisses automatically — before resuming their task in the parent view. In iOS 15 and later, a sheet can also be nonmodal. When a nonmodal sheet is onscreen, people can continue their task in the parent view while also interacting with the sheet.

Use a sheet for nonimmersive content and simple tasks. A sheet allows part of the parent view to remain visible behind it, helping people retain their original context as they interact with the sheet. Use a full-screen modal presentation to offer immersive content such as videos, photos, or camera views, or to enable a complex task such as marking up a document or editing a photo. The full-screen modal style covers the entire screen, minimizing visual distraction. For developer guidance, see UIModalPresentationStyle.fullScreen.

Consider supporting the medium detent to allow progressive disclosure of the sheet’s content. For example, a share sheet displays the most relevant items within the medium detent, where they’re visible without resizing. To view more items, people can scroll or expand the sheet.

Use a nonmodal sheet when you want to present supplementary items people can use without pausing the main task. When people choose an item in a nonmodal sheet, the parent view can update in response, providing feedback on the item’s effect and letting people continue their task while the sheet remains onscreen. For example, Notes uses a nonmodal sheet to help people apply different formatting to different text selections as they edit a note. To enable a nonmodal sheet experience, you support the medium detent and remove dimming from the parent view (for developer guidance, see largestUndimmedDetentIdentifier).

A screenshot of an in-progress note on iPhone. Two words have been selected and are shown highlighted in yellow. In the bottom half of the screen, the format sheet shows that the selected words use the body font in bold.

The Notes format sheet lets people apply formatting to selected text in the editing view.

A screenshot of the same in-progress note on iPhone. A different word has been selected and highlighted in yellow. The format sheet shows that the selected word uses the body font in italics.

Because the sheet is nonmodal, people can make additional text selections without dismissing the sheet.

In general, include a grabber in a resizable sheet. A grabber shows people that they can drag the sheet to resize it; they can also tap it to cycle through the detents. In addition to providing a visual indicator of resizability, a grabber also works with VoiceOver so people can resize the sheet without seeing the screen. For developer guidance, see prefersGrabberVisible.

Don’t display a sheet on top of a popover. Although you can display a sheet within a popover, nothing should appear on top of a popover (except possibly an alert). In rare cases when you need to present a sheet after people take an action in a popover, close the popover before displaying the sheet.