---
title: UITraitCollection
framework: uikit
role: symbol
role_heading: Class
path: uikit/uitraitcollection
---

# UITraitCollection

A collection of data that represents the environment for an individual element in your app’s user interface.

## Declaration

```swift
class UITraitCollection
```

## Mentioned in

Providing data to the view hierarchy with custom traits Building a desktop-class iPad app Displaying and managing views with a view controller

## Overview

Overview The traitCollection property of the UITraitEnvironment protocol contains traits that describe the state of various elements of the iOS user interface, such as size class, display scale, and layout direction. Together, these traits compose the UIKit trait environment. The following classes adopt UITraitEnvironment: UIScreen, UIWindow, UIWindowScene, UIViewController, UIPresentationController, and UIView. To create an adaptive interface, write code to adjust your app’s layout according to changes in these traits. You access specific trait values using the UITraitCollection horizontalSizeClass, verticalSizeClass, displayScale, userInterfaceIdiom, and other properties. To make your view controllers and views responsive to changes in the iOS interface environment, use automatic trait tracking in supported UIViewController and UIView methods, or register to track specific trait changes with UITraitChangeObservable methods. For more information, see Adapting your app when traits change. To customize view controller animations in response to interface environment changes, override the willTransition(to:with:) method of the UIContentContainer protocol. For more information about the horizontal (width) and vertical (height) size classes your app can encounter when running full-screen on various devices, see Human Interface Guidelines > Layout. You can create standalone trait collections to assist in matching against specific environments. The UITraitCollection class includes four specialized constructors, as well as a constructor that enables you to combine an array of trait collections, init(traitsFrom:). One important use of standalone trait collections is to enable conditional use of images based on the current iOS interface environment. You can associate a trait collection with a UIImage instance by way of a UIImageAsset instance, as described in the overview section of UIImageAsset. For information on configuring asset catalogs graphically from within the Xcode IDE, see Managing assets with asset catalogs. You can employ a standalone trait collection to enable a two-column split view in landscape orientation on iPhone. See the setOverrideTraitCollection(_:forChild:) method of the UIViewController class. You can also use a standalone trait collection to customize view appearance with the appearance(for:) protocol method, as described in UIAppearance. For information on creating custom traits, see Providing data to the view hierarchy with custom traits.

## Topics

### Getting the current traits

- [current](uikit/uitraitcollection/current.md)

### Getting related traits

- [systemTraitsAffectingColorAppearance](uikit/uitraitcollection/systemtraitsaffectingcolorappearance-64z7q.md)
- [systemTraitsAffectingImageLookup](uikit/uitraitcollection/systemtraitsaffectingimagelookup-4jv5.md)

### Modifying traits

- [init(mutations:)](uikit/uitraitcollection/init(mutations:).md)
- [modifyingTraits(_:)](uikit/uitraitcollection/modifyingtraits(_:).md)
- [UITraitCollection.TraitMutations](uikit/uitraitcollection/traitmutations.md)

### Getting trait changes

- [changedTraits(from:)](uikit/uitraitcollection/changedtraits(from:).md)

### Comparing trait collections

- [hasDifferentColorAppearance(comparedTo:)](uikit/uitraitcollection/hasdifferentcolorappearance(comparedto:).md)
- [containsTraits(in:)](uikit/uitraitcollection/containstraits(in:).md)

### Performing actions with the current traits

- [performAsCurrent(_:)](uikit/uitraitcollection/performascurrent(_:).md)

### Retrieving size class traits

- [horizontalSizeClass](uikit/uitraitcollection/horizontalsizeclass.md)
- [verticalSizeClass](uikit/uitraitcollection/verticalsizeclass.md)
- [UIUserInterfaceSizeClass](uikit/uiuserinterfacesizeclass.md)

### Retrieving display-related traits

- [displayScale](uikit/uitraitcollection/displayscale.md)
- [displayGamut](uikit/uitraitcollection/displaygamut.md)
- [UIDisplayGamut](uikit/uidisplaygamut.md)

### Retrieving interface-related traits

- [userInterfaceStyle](uikit/uitraitcollection/userinterfacestyle.md)
- [UIUserInterfaceStyle](uikit/uiuserinterfacestyle.md)
- [userInterfaceIdiom](uikit/uitraitcollection/userinterfaceidiom.md)
- [UIUserInterfaceIdiom](uikit/uiuserinterfaceidiom.md)
- [userInterfaceLevel](uikit/uitraitcollection/userinterfacelevel.md)
- [UIUserInterfaceLevel](uikit/uiuserinterfacelevel.md)
- [layoutDirection](uikit/uitraitcollection/layoutdirection.md)
- [UITraitEnvironmentLayoutDirection](uikit/uitraitenvironmentlayoutdirection.md)
- [resolvesNaturalAlignmentWithBaseWritingDirection](uikit/uitraitcollection/resolvesnaturalalignmentwithbasewritingdirection-58wlh.md)
- [accessibilityContrast](uikit/uitraitcollection/accessibilitycontrast.md)
- [UIAccessibilityContrast](uikit/uiaccessibilitycontrast.md)
- [legibilityWeight](uikit/uitraitcollection/legibilityweight.md)
- [UILegibilityWeight](uikit/uilegibilityweight.md)
- [activeAppearance](uikit/uitraitcollection/activeappearance.md)
- [UIUserInterfaceActiveAppearance](uikit/uiuserinterfaceactiveappearance.md)
- [toolbarItemPresentationSize](uikit/uitraitcollection/toolbaritempresentationsize.md)
- [UINSToolbarItemPresentationSize](uikit/uinstoolbaritempresentationsize.md)
- [hdrHeadroomUsageLimit](uikit/uitraitcollection/hdrheadroomusagelimit.md)
- [UIHDRHeadroomUsageLimit](uikit/uihdrheadroomusagelimit.md)

### Retrieving the force touch capability traits

- [forceTouchCapability](uikit/uitraitcollection/forcetouchcapability.md)
- [UIForceTouchCapability](uikit/uiforcetouchcapability.md)

### Retrieving content size category information

- [preferredContentSizeCategory](uikit/uitraitcollection/preferredcontentsizecategory.md)
- [UIContentSizeCategory](uikit/uicontentsizecategory.md)

### Retrieving layout environment traits

- [listEnvironment](uikit/uitraitcollection/listenvironment.md)
- [UIListEnvironment](uikit/uilistenvironment.md)
- [splitViewControllerLayoutEnvironment](uikit/uitraitcollection/splitviewcontrollerlayoutenvironment.md)
- [UISplitViewController.LayoutEnvironment](uikit/uisplitviewcontroller/layoutenvironment.md)
- [tabAccessoryEnvironment](uikit/uitraitcollection/tabaccessoryenvironment.md)
- [UITabAccessory.Environment](uikit/uitabaccessory/environment.md)

### Retrieving scene capture state

- [sceneCaptureState](uikit/uitraitcollection/scenecapturestate.md)
- [UISceneCaptureState](uikit/uiscenecapturestate.md)

### Retrieving dynamic range traits

- [imageDynamicRange](uikit/uitraitcollection/imagedynamicrange.md)

### Retrieving typesetting language traits

- [typesettingLanguage](uikit/uitraitcollection/typesettinglanguage-6i635.md)

### Getting an image configuration object

- [imageConfiguration](uikit/uitraitcollection/imageconfiguration.md)

### Creating a trait collection

- [init()](uikit/uitraitcollection/init().md)
- [init(userInterfaceIdiom:)](uikit/uitraitcollection/init(userinterfaceidiom:).md)
- [init(horizontalSizeClass:)](uikit/uitraitcollection/init(horizontalsizeclass:).md)
- [init(verticalSizeClass:)](uikit/uitraitcollection/init(verticalsizeclass:).md)
- [init(userInterfaceStyle:)](uikit/uitraitcollection/init(userinterfacestyle:).md)
- [init(accessibilityContrast:)](uikit/uitraitcollection/init(accessibilitycontrast:).md)
- [init(userInterfaceLevel:)](uikit/uitraitcollection/init(userinterfacelevel:).md)
- [init(legibilityWeight:)](uikit/uitraitcollection/init(legibilityweight:).md)
- [init(forceTouchCapability:)](uikit/uitraitcollection/init(forcetouchcapability:).md)
- [init(displayScale:)](uikit/uitraitcollection/init(displayscale:).md)
- [init(displayGamut:)](uikit/uitraitcollection/init(displaygamut:).md)
- [init(layoutDirection:)](uikit/uitraitcollection/init(layoutdirection:).md)
- [init(preferredContentSizeCategory:)](uikit/uitraitcollection/init(preferredcontentsizecategory:).md)
- [init(activeAppearance:)](uikit/uitraitcollection/init(activeappearance:).md)
- [init(toolbarItemPresentationSize:)](uikit/uitraitcollection/init(toolbaritempresentationsize:).md)
- [init(hdrHeadroomUsageLimit:)](uikit/uitraitcollection/init(hdrheadroomusagelimit:)-5zqph.md)
- [init(imageDynamicRange:)](uikit/uitraitcollection/init(imagedynamicrange:).md)
- [init(listEnvironment:)](uikit/uitraitcollection/init(listenvironment:).md)
- [init(resolvesNaturalAlignmentWithBaseWritingDirection:)](uikit/uitraitcollection/init(resolvesnaturalalignmentwithbasewritingdirection:).md)
- [init(sceneCaptureState:)](uikit/uitraitcollection/init(scenecapturestate:).md)
- [init(tabAccessoryEnvironment:)](uikit/uitraitcollection/init(tabaccessoryenvironment:).md)
- [init(typesettingLanguage:)](uikit/uitraitcollection/init(typesettinglanguage:).md)
- [init(coder:)](uikit/uitraitcollection/init(coder:).md)
- [init(traitsFrom:)](uikit/uitraitcollection/init(traitsfrom:).md)

### Initializers

- [init(HDRHeadroomUsageLimit:)](uikit/uitraitcollection/init(hdrheadroomusagelimit:)-3nnko.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-3as8f.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-3fg2.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-4100d.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-48zja.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-4shto.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-4slti.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-55rvq.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-58ia2.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-59di1.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-59u4e.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-6h22m.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-7sd52.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-7toc9.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-836bk.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-8k1t1.md)
- [init(_:value:)](uikit/uitraitcollection/init(_:value:)-vvgw.md)
- [init(traitsFromCollections:)](uikit/uitraitcollection/init(traitsfromcollections:).md)

### Instance Methods

- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-162et.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-1n0uk.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-1wvrv.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-227ps.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-3p47.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-418p6.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-4c3s8.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-5swjm.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-7jssv.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-8gf97.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-8yat4.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-8z10u.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-8z152.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-8zl00.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-9op5s.md)
- [replacing(_:value:)](uikit/uitraitcollection/replacing(_:value:)-o6qa.md)

### Subscripts

- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-10ujz.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-1kkve.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-1n030.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-2bvk.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-32r6h.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-3ztj.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-43in7.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-4gjs6.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-4zpi4.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-5wwet.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-6cdgq.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-6jr9c.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-8rqo4.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-90z0t.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-96v58.md)
- [subscript(_:)](uikit/uitraitcollection/subscript(_:)-9nfd8.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSecureCoding](foundation/nssecurecoding.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Adaptivity

- [UITraitEnvironment](uikit/uitraitenvironment.md)
- [Automatic trait tracking](uikit/automatic-trait-tracking.md)
- [UIAdaptivePresentationControllerDelegate](uikit/uiadaptivepresentationcontrollerdelegate.md)
- [UIContentContainer](uikit/uicontentcontainer.md)
