<!--
{
  "availability" : [
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSUserInterfaceCompression",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(pl)NSUserInterfaceCompression"
  },
  "title" : "NSUserInterfaceCompression"
}
-->

# NSUserInterfaceCompression

A protocol that describes how a UI control should redisplay when space is restricted.

```
protocol NSUserInterfaceCompression
```

## Overview

A control that adopts this protocol has the ability to resize itself when space is at a premium.

## Topics

### Compressing the UI

[`func compress(withPrioritizedCompressionOptions: [NSUserInterfaceCompressionOptions])`](/documentation/AppKit/NSUserInterfaceCompression/compress(withPrioritizedCompressionOptions:))

Compress the view by applying the specified compression options.

### Querying Compression Status

[`func minimumSize(withPrioritizedCompressionOptions: [NSUserInterfaceCompressionOptions]) -> NSSize`](/documentation/AppKit/NSUserInterfaceCompression/minimumSize(withPrioritizedCompressionOptions:))

Returns the minimum size a view can achieve by applying the supplied compression options.

[`var activeCompressionOptions: NSUserInterfaceCompressionOptions`](/documentation/AppKit/NSUserInterfaceCompression/activeCompressionOptions)

The compression options that are currently applied to the view.

## Relationships

### Conforming Types

[`NSButton`](/documentation/AppKit/NSButton)

[`NSPopUpButton`](/documentation/AppKit/NSPopUpButton)

[`NSStatusBarButton`](/documentation/AppKit/NSStatusBarButton)

[`NSSegmentedControl`](/documentation/AppKit/NSSegmentedControl)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)