Adaptive Layout is a technique for supporting multiple display sizes and orientations in iOS applications.
Technical Overview
Adaptive Layout has been available since iOS 8. Instead of specific device types, or orientations, it introduces the concept of Size Classes. A size class can be either Compact
or Regular
in Horizontal or Vertical directions. Additionally there is an Any
size class which serves for general layout constraints.
Some examples:
Compact Width
+Regular Height
represents an iPhone in portrait orientation.Any Width
+Compact Height
will apply to iPhones in landscape.
Each size class may have its custom layout, with its own set of constraints. Adaptive Layout uses a hierarchical approach to determine which rules to use:
Any
rules are used for general use: If there are no specific rules in either Horizontal or Vertical layouts, the screen will show according to these constraints. This is the perfect place for defining shared layout rules- Use
Regular
orCompact
to achieve custom layout rules for a specific subset of Size classes. For example, to achieve a speficic layout for iPhones in landscale mode, proper constraints must be installed in theAny Width
+Compact Height
size class.
To support this new approach UIKit was also extended with Trait Collections. A UITraitCollection
object describes the properties of an user interface element, such as its display scale (Retina or Non-Retina resolutions), device idiom (iPhone or iPad) and its size class.
In case of any change in layout (e.g.: a rotation), developers can examine the new traits, and act accordingly. In order to support this new approach, previous rotation-focused methods have been deprecated in favor of handling transitions between different trait collections.