---
title: UIMutableTraits
framework: uikit
role: symbol
role_heading: Protocol
path: uikit/uimutabletraits-13ja5
---

# UIMutableTraits

A mutable container of traits.

## Declaration

```swift
protocol UIMutableTraits
```

## Overview

Overview The UIMutableTraits protocol provides read-write access to get and set trait values on an underlying container. UIKit uses this protocol to facilitate working with instances of UITraitCollection, which are immutable and read-only. The UITraitCollection initializer init(mutations:) uses an instance of UIMutableTraits, which enables you to set a batch of trait values in one method call. UITraitOverrides conforms to UIMutableTraits, making it easy to set trait overrides on trait environments such as views and view controllers. When you define a custom trait, declare a property for the trait in an extension to UIMutableTraits so that you can access your custom trait using standard property syntax. The following example defines an extension and sets the theme on the traitOverrides property: // ThemeTrait conforms to UITraitDefinition, and has a defaultValue type of Theme extension UIMutableTraits {     var theme: Theme {         get { self[ThemeTrait.self] }         set { self[ThemeTrait.self] = newValue }     } }

// Apply an override for the custom theme trait. view.traitOverrides.theme = .monochrome

## Topics

### Getting and setting trait values

- [accessibilityContrast](uikit/uimutabletraits-13ja5/accessibilitycontrast.md)
- [activeAppearance](uikit/uimutabletraits-13ja5/activeappearance.md)
- [displayGamut](uikit/uimutabletraits-13ja5/displaygamut.md)
- [displayScale](uikit/uimutabletraits-13ja5/displayscale.md)
- [forceTouchCapability](uikit/uimutabletraits-13ja5/forcetouchcapability.md)
- [headroomUsageLimit](uikit/uimutabletraits-13ja5/headroomusagelimit.md)
- [horizontalSizeClass](uikit/uimutabletraits-13ja5/horizontalsizeclass.md)
- [imageDynamicRange](uikit/uimutabletraits-13ja5/imagedynamicrange.md)
- [layoutDirection](uikit/uimutabletraits-13ja5/layoutdirection.md)
- [legibilityWeight](uikit/uimutabletraits-13ja5/legibilityweight.md)
- [listEnvironment](uikit/uimutabletraits-13ja5/listenvironment.md)
- [preferredContentSizeCategory](uikit/uimutabletraits-13ja5/preferredcontentsizecategory.md)
- [resolvesNaturalAlignmentWithBaseWritingDirection](uikit/uimutabletraits-13ja5/resolvesnaturalalignmentwithbasewritingdirection.md)
- [sceneCaptureState](uikit/uimutabletraits-13ja5/scenecapturestate.md)
- [splitViewControllerLayoutEnvironment](uikit/uimutabletraits-13ja5/splitviewcontrollerlayoutenvironment.md)
- [tabAccessoryEnvironment](uikit/uimutabletraits-13ja5/tabaccessoryenvironment.md)
- [toolbarItemPresentationSize](uikit/uimutabletraits-13ja5/toolbaritempresentationsize.md)
- [typesettingLanguage](uikit/uimutabletraits-13ja5/typesettinglanguage.md)
- [userInterfaceIdiom](uikit/uimutabletraits-13ja5/userinterfaceidiom.md)
- [userInterfaceLevel](uikit/uimutabletraits-13ja5/userinterfacelevel.md)
- [userInterfaceStyle](uikit/uimutabletraits-13ja5/userinterfacestyle.md)
- [verticalSizeClass](uikit/uimutabletraits-13ja5/verticalsizeclass.md)

### Subscripts

- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-19j2e.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-1b2k9.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-1k64j.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-2n1bn.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-2tbov.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-4tqsr.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-5h7go.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-6s6f5.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-7jap6.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-7kxs.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-7m9p0.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-8vqxe.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-9ld0y.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-9za2c.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-dwij.md)
- [subscript(_:)](uikit/uimutabletraits-13ja5/subscript(_:)-ve6h.md)

## Relationships

### Conforming Types

- [UITraitOverrides](uikit/uitraitoverrides-swift.struct.md)

## See Also

### Related Documentation

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

### Observing and managing traits

- [Automatic trait tracking](uikit/automatic-trait-tracking.md)
- [UITraitCollection](uikit/uitraitcollection.md)
- [UITraitEnvironment](uikit/uitraitenvironment.md)
- [UITraitChangeObservable](uikit/uitraitchangeobservable-67e94.md)
- [UIAdaptivePresentationControllerDelegate](uikit/uiadaptivepresentationcontrollerdelegate.md)
- [UIContentContainer](uikit/uicontentcontainer.md)
