Design great-looking apps for Apple iOS devices.
Designing iOS apps can be difficult sometimes, but finding correct and up-to-date information about all of Apples’ devices shouldn’t be. These design guidelines will help any designer who’s building neat things for iOS get started within seconds.
These guidelines describe how to design apps that follow the official HIG for iOS by Apple, not what you can do with custom controls. Sometimes it makes sense to break the rules. The purpose of this document is to guide you, not to provide solutions for complex and unique design problems.
This unofficial documentation will be updated and extended regularly.
|Device||Retina||Portrait (px)||Landscape (px)|
|iPhone XS Max||Retina HD||1242 x 2688||2688 x 1242|
|iPhone XR||Retina||828 x 1792||1792 x 828|
|iPhone X, XS||Retina HD||1125 x 2436||2436 x 1125|
|iPhone 6+, 6S+, 7+, 8+||Retina HD||1080 x 1920||1920 x 1080|
|iPhone 6, 6S, 7, 8||Retina||750 x 1334||1334 x 750|
|iPhone 5, 6SE5, 5S, 5C, 6SE||Retina||640 x 1136||1136 x 640|
|iPhone 44, 4S||Retina||640 x 960||960 x 640|
|iPhone1st, 2nd & 3rd Generation||No||320 x 480||480 x 320|
|iPad Air / Retina iPad1st & 2nd Generation / 3rd & 4th||No||1536 x 2048||2048 x 1536|
|iPad Pro12.9" 2018||No||2048 x 2732||2732 x 2048|
|iPad Pro11" 2018||No||1668 x 2388||2388 x 1668|
|iPad Pro1st Generation (10.5")||No||1668 x 2224||2224 x 1668|
|iPad Mini2nd, 3rd & 4th Generation||Retina||1536 x 2048||2048 x 1536|
|iPadMini, 1st & 2nd Generation||No||768 x 1024||1024 x 768|
Pixels are the smallest physical element that we can control on a digital display. The more pixels can be fitted into a specific screen size, the higher the PPI (pixels-per-inch), and the clearer the rendered content becomes.
Points are a resolution-independent measurement. Depending on the screens pixel density, a point can contain multiple pixels (e.g., 1 pt contains 2 x 2 pixels on a regular retina display).
When you are designing for various display types, you should think in points, but design in pixels. This means you will still need to export all your assets in 3 different resolutions, no matter in which resolution you are designing your app.
As long as it is not stated otherwise (by appending „px“ to a value), this guide always refers to points when it comes to specific dimensions. If you need the value in pixels, just multiply by 2 for Retina screens or by 3 for Retina HD screens.
|Device||Asset Resolution||PPI||Display Size|
|iPhone XS Max||@3x||458||6.5″|
|iPhone X, XS||@3x||458||5.8″|
|iPhone 6+, 6S+, 7+, 8+||@3x||401||5.5″|
|iPhone 6, 6S, 7, 8||@2x||326||4.7″|
|iPhone 5, 6SE5, 5S, 5C, 6SE||@2x||326||4.0″|
|iPhone 44, 4S||@2x||326||3.5″|
|iPhone1st, 2nd & 3rd Generation||@1x||163||3.5″|
|iPad Pro12.9" 2018||@2x||264||12.9″|
|iPad Pro11" 2018||@2x||264||11″|
|iPad Pro1st Generation (10.5")||@2x||264||10.5″|
|iPad Air / Retina iPad1st & 2nd Generation/ 3rd & 4th||@2x||264||9.7″|
|iPad Mini2nd, 3rd & 4th Generation||@2x||326||7.9″|
|iPad Mini1st Generation||@1x||163||7.9″|
|iPad1st & 2nd Generation||@1x||132||9.7″|
Rendered pixels and physical pixels are equal on all iOS devices, with one exception: the Retina HD screen of the iPhone 6-, 7-, 8-Plus and iPhone X, XS and XS Max. Because its screen has a lower pixel resolution than what would be a natural @3x resolution, the rendered content is automatically resized to approximately 87% of the original size (from 2208 x 1242 pixels to fit the display resolution of 1920 x 1080 pixels) for the regular Plus models.
The iPhone X requires some special attention from designers. Unlike all other iOS devices, it features a display with round corners and also has a cut-out at the top of the screen where you can find the front cameras, sensors and speaker. The width of the screen is the same as on the iPhone 6, 7 and 8, but it’s also 145pt taller. When designing apps for the iPhone X you have to be aware of the safe zone and layout margins to ensure your app user interface doesn’t get clipped by the device’s sensors or corners.
|Device||App Icon||AppStore Icon||Spotlight||Settings|
|iPhone +6+, 6S+, 7+, 8+, X||180x180 px||1024x1024 px||120x120 px||87x87 px|
|iPhone 4, 4S, 5, 5C, 5S, 6, 6SE, 6S, 7, 8||120x120 px||1024x1024 px||80x80 px||58x58 px|
|Old iPhones 1st, 2nd, 3rd Generation||57x57 px||1024x1024 px||29x29 px||29x29 px|
|iPad Pro||167x167 px||1024x1024 px||120x120 px||58x58 px|
|Retina iPadsMini 2 & 3, Air, 3 & 4||152x152 px||1024x1024 px||80x80 px||58x58 px|
|Old iPads1, 2, Mini 1||76x76 px||1024x1024 px||40x40 px||29x29 px|
App icons assets are generally added to the application package as plain, squared PNG files in various dimensions. When rendered on a device, iOS applies various effects to app icons.
The old simple radii values for rounded corners are gone. Since iOS 7, app icons have been using the shape of a superellipse. When designing app icons for iOS, I recommend to use the official app icon templates provided by Apple.
The rounded corners should not be included in the final exported assets, but you might need them in your design process if you want to add effects, such as a stroke or shadows, that are aligned to the corner of the icon.
If you are masking your icon asset with the superellipse shape because you want to apply effects aligned to the corners, make sure not to use any transparency for the area outside the mask. Transparency is not supported at all for app icons and instead is rendered as plain black. If your mask is not 100% accurate, users will see small black fragments on the rounded edges. It’s recommend to set the background of the canvas to be the same as the app icon background.
If the app icon you are using has a white background, a 1 pixel gray border stroke will be applied to make it easier to recognize the edges of the icon. This is only done in the settings app (if your application is listed there) and the AppStore.
On older iOS versions, these effects are applied automatically: rounded corners (not the same shape as iOS 7+ icons are using), drop shadows on the home screen and a gloss effect that can be disabled.
Apple developed a golden ratio grid system that can be used to size and align elements on your icon correctly. Nevertheless, even Apple designers are not following the grid system very strictly with the native apps’ icons. Feel free to break the rules if your icon simply works better without aligning all elements strictly to the grid.
The default system font on all iOS versions previous iOS 9 is Helvetica Neue. With the release of iOS 9, Apple introduced a brand new font called San Francisco, which replaced Helvetica Neue as the default font. San Francisco comes in two shapes: „SF UI Display“ and „SF UI Text“, while „Display“ is primarly used for UI components, „Text“ features a wider letter spacing and should be used for longer texts. You can download the San Francisco fonts here if you are a member of Apple’s Developer program. In addition to the default font, many alternative font faces are available to use. You can find a complete list of pre-installed typefaces here.
|Element||Size (pt)||Weight||Spacing (pt)||Type|
|Large Nav Bar Title||34||Bold||-0.41||Text|
|Nav Bar Title||17||Semibold||-0.41||Text|
|Nav Bar Button||17||Regular||-0.41||Text|
|Tab Bar Button||10||Regular||-0.24||Text|
|Table Row Subline||15||Regular||-0.24||Text|
|Action Sheets||20||Regular / Semibold||0.75||Display|
Technically, any True Type Font (.ttf) can be used within an iOS app, but be careful about licenses. It should be safe to use fonts that are completely free for commercial usage. App licenses for commercial fonts are rarely available, and if they are, securing them can turn out to be somewhat expensive. MyFonts currently offers the biggest collection of fonts that can be licensed for mobile app usage.
Since iOS 7, Apple has been using a vibrant color palette for the interface of the OS and pre-installed apps. While you can use the default iOS color palette listed above, you can also (and probably should, if you want to stand out) use your own colors.
In iOS apps, icons have always been a great way to support text labels with a visual relationship to the performed action or to replace text completely (often for very common actions such as „New“, „Delete“, etc.). Usually, we are dealing with icons that are part of the Navigation Bar, Tool Bar or Tab Bar.
Icons used in Navigation Bars and Toolbars should be in outlined style with a stroke width of 1 or 1.5pt. Since iOS 11 Apple recommends to use a new solid („glyph“) icon style for Tab Bar icons.
You should never include any additional effects such as a drop-shadow or inner shadows on button icons because these are relicts from previous iOS versions (before the iOS 7 redesign). Button icons should be drawn in one solid color on a transparent background—the shape of the icon is used as a mask, and the color will be applied programmatically.
Icons in the Activity View (also known as Share Popover) used to be designed in outline style, but since iOS 8, Apple has reverted back to solid fill icons on a plain white background.
iOS offers a great collection of ready-to-use views and controls that allow app developers to quickly build interfaces. Some elements can be customized to a certain level, but other cannot and probably also should not be. When designing an application for iOS, you should know your set of tools and stick to them whenever possible. However, in some cases, it might be worthwhile to build a custom control because you need a more custom look or want to change the functionality of an already existing control (danger zone). Almost anything is possible,and sometimes it makes sense to break the rules, but always think twice before doing so.
The Status Bar contains basic system information such as the current carrier, time, battery status and more. It’s visually connected to the Navigation Bar and makes use of the same background fill. To match the style of your app and guarantee readability, the content of the status bar comes in two different styles: dark (black) and light (white).
On the iPhone X, the status bar is taller than on all other iOS devices. Due to the notch that cuts into the display area, the new status bar is split in two parts. On the iPad Pro with a liquid LCD display, the status bar is slightly taller than before.
It is possible to hide the Status Bar, but think twice before doing so. For example, users might be interested in knowing if they are connected to a WiFi network when the app regularly downloads web content or if Bluetooth is enabled when the app requires a Bluetooth link to third-party hardware. A valid reason to hide the Status Bar is when you want to remove all distractions from a single element, for example, when displaying full screen content such as an image gallery.
The navigation bar contains the controls for navigating through the applications views and optionally to manage the content of the current view. It will always appear at the top of the screen, right below the status bar. By default, the background is slightly translucent and blurs content underneath the bar. The background fill of the bar can be set to a solid color, a gradient or a custom bitmap-pattern.
With the release of iOS 11, Apple introduced a new navigation bar style: when the app content is at scroll position zero (at the top), the title is moved into a separate line underneath the original navigation bar area and is massively enlarged. Once the user starts scrolling down, the title slowly fades out and snaps back into it’s original size and position.
The elements should always follow a specific alignment pattern.
With the release of iOS 12, Apple increased the height of the base navigation bar by 6 points on iPad devices only. Large titles continue to add a further 52 points to the height of the navigation bar.
A toolbar contains a set of actions for managing or manipulating the content of the current view. On the iPhone, it will always appear aligned at the bottom edge of the screen, while on the iPad, it can also be displayed aligned at the top of the screen.
Similarly to the navigation bar, the background fill of toolbars can be modified, is translucent and blurs the underlaying content by default.
Toolbars should be used when a specific view requires more than three primary actions that would hardly fit or would look messy in the navigation bar.
Alongside the Tab Bar, Apple increased the height of Toolbars by 6 points on all iPad devices since iOS 12.
Search bars come in two different styles by default: prominent and minimal. Both versions do have the same functionality.
Search bars can make use of a prompt — a short sentence to introduce the functionality in the context of the search. For example, „Enter a city, zip code or airport.“
To provide even more control over a search query, it is possible to chain the search Bar with a scope bar. The scope bar will use the same style as the search bar and might be useful when there are clearly defined categories for the search results. For example, in a music app, the search results could be filtered again by interpreters, albums or songs.
The tab bar is used to allow the user to quickly navigate through the separate views of an application, and it should only be used for this purpose. It always appears at the bottom edge of the screen. By default, its slightly translucent and uses the same system blur for underlaying content as the navigation bar.
A tab bar can only contain a fixed maximum number of tabs. Once there are more tabs than the maximum count, the last tab displayed will be replaced by a „More-tab“ that will lead to a list of hidden tabs, with an option to re-order the displayed tabs.
While the maximum amount of tabs displayed is five on iPhones, it’s possible to display up to seven tabs on the iPad while avoiding a more-tab.
To notify users about new information on a view, it sometimes makes sense to apply a badge count to a tab bar button. If a view is temporarily disabled, the related tab button should not be completely hidden; instead, it should be faded out to visually communicate the disabled state.
On the iPad, labels for tabs are rendered in a larger font size and next to the icon instead of below. Since iOS 12, the tab bar is also slightly taller, matching the increased height of toolbars (50pt).
Table views are used to display small to large amounts of list style information in a single or multiple columns and with the option to divide several rows into separate sections or to group them.
There are two basic table view types that should be used, depending on the type of data you are presenting.
A plain table contains a number of rows that can have a header on the top and a footer after the last row. It’s possible to display a vertical navigation on the right edge of the screen to navigate through the table, which makes sense when presenting a big data set that could be sorted in some way (e.g., alphabetically descending).
A grouped table allows you to organize rows in groups. Each group can have a header (best used to describe the context for the group) as well as a footer (good for help text, etc.). A grouped table needs to contain at least one group, and each group needs to contain at least one row.
For both table view types, a few styles are available to present the data in a way that allows users to easily scan, read and probably modify it.
A table row in default style has an optional image aligned on the left and a title.
The subtitle table style enables a small subtitle text underneath the row title. It is useful for further explanations or short descriptions.
The value table style allows you to display a specific value that is related to the row title. Similar to the default style, each row can have an image and a title that are both aligned to the left. The title is followed by the right aligned label for the value, which is usually displayed in a slightly more subtle text color than the title.
When displaying subtitles in a table view you should consider using the larger table cell style. The amount of information and controls you can display with these is the same as with other table cell styles, but due to the increased paddings the table doesn’t look as busy.
iOS provides various styles of temporary views that can be used to display, edit and manipulate data in a way that fits best in a given situation. While each temporary view exists for a very specific purpose and each one looks different, all temporary views still have one thing in common: When displayed, it’s the highest index layer on the current view (they appear on top of everything else), and content underneath is overlayed by a translucent black background.
An activity view is used to perform specific tasks. These tasks can be default system tasks such as share content via the available options, or they can be completely custom actions. When designing icons for custom task buttons, you should follow the same guidelines as for the active state of bar button icons — solid fill, no effects, on a transparent background.
Action Sheets are used to perform one single action from a list of available actions and to force the user of an app to confirm an action or cancel it.
In portrait mode (and on small landscape screen resolutions), actions are always displayed as a list of buttons sliding in and staying at the bottom edge of the screen. In this case, an action sheet should always have a cancel button to close the view and not perform any of the listed actions.
When there is enough space available (e.g., on iPad screens), action sheets visually transform into popovers. A button to close the view is not required anymore because tapping a target anywhere outside the popover will close it automatically.
The purpose of alerts is to inform the user about critical information and optionally to force the user to make a decision about some action.
An alert view does always contain a title text, which should not be longer than one line and one (for pure informational alerts, e.g., „OK“) or two (for alerts that require a decision, e.g., „Send“ and „Cancel“) buttons.
Also, you can add a message text, if needed, as well as up to two text input fields, one of which can be a masked input field, which is appropriate for sensitive information like passwords or PINs.
The Edit Menu allows users to perform actions such as Copy, Paste, Cut, etc., when an element is selected (text, images, others). While it is possible to control which operations the user can choose from, the visual appearance of edit menus is set and not configurable unless you build your own completely custom edit menu.
Popovers are useful when a specific action requires multiple user inputs before proceeding. A good example is adding an item, which has a few attributes that need to be set before the item can be created.
In a horizontal environment, popovers reveal underneath the related control (such as a button) with an arrow pointing to that control while opened. The background of a popover uses a slightly reduced opacity and blurs the content underneath, just as many other UI elements have done since iOS 7.
A popover is a powerful temporary view that can contain various objects such as its own navigation bar, table views, maps or web views. When a popover grows in size due to the number of contained elements and reaches the bottom edge of the viewport, it is possible to scroll within the popover.
Modals are a useful view for tasks that require multiple commands or inputs by the user. They appear on top of everything else, and, while open, block interaction with any other interactive elements underneath.
The typical modal usually provides:
There are three different modal styles available:
iOS provides a wide range of controls for basically any required input type you can think of. Listed below you will find the most important (commonly used), but for a full list of the available controls, you should look at the iOS Developer Library.
Probably the most used control overall is the good old button. Since iOS 7, the default button design hasn't really looked like a button anymore, but rather more like a plain text link. The button control is highly customizable and allows you to style everything from text style, drop shadows and color to an icon that is either prepended or centered if there is no text label, as well as fully custom backgrounds.
Keep in mind that a button can have several states, which should be communicated with visual language: default, highlighted, selected and disabled.
Pickers are used to select one value from a list of available values. The web equivalent would be a select box (which the picker control is also used for when touching a select in Safari). An extended version of picker is the datepicker, which allows the user to scroll through a list of dates and times and select values for (configurable) day, month and time.
Except for the background color, it is not possible to change the visual style or size (same as keyboard) of a picker control. Most often, they appear at the bottom of the screens, where keyboards appear as well, but it is possible to use them in other positions.
A segment control contains a set of segments (at least two) that can be used for things like filtering content or to create tabs for clearly categorized content types.
Each segment can contain a text label or an image (icon), but never both. In addition, using a mixed set of segment types (text and images) in one segment control is not really recommended. The width of one segment changes automatically based on the number of segments (two segments: 50% of total control width, 5 segments: 20% of total control width).
The slider control allows the user to choose one specific value from a range of allowed values. Since choosing a value works pretty smoothly and without any steps, sliders are recommended for selecting an estimated, but not exact, value. For example, a slider would be a good control for setting the sound volume, since the user can hear the difference and can see the difference between loud and very loud, but a text input to set an exact dB value would be impractical.
It is possible to set icons for the minimum and the maximum value, which are displayed on the start and end edge of the slider control, thereby allowing you to visually embrace the purpose of the slider.
Steppers should be used when the user should enter an exact value from a limited range of possible values (e.g., 1-10). A stepper always contains two segmented buttons, one for lowering and one for raising the current value.
Visually, the stepper control is highly customizable:
A switch allows the user to quickly toggle between two possible states: on and off. It’s the checkbox for iOS apps. It is possible to customize the color for the on and off states, but the appearance of the toggle button and size of the switch are set and cannot be changed.
There are various keyboard types available to provide the best possible keyboard for a specific text input. While it is possible to build your own completely custom keyboard, default keyboards cannot be customized in style or size.
These guidelines only provide basic information to get you started with iOS design. Once you dig deeper, you might be interested in more details. These articles and resources should help you.