---
title: UIScene
framework: uikit
role: symbol
role_heading: Class
path: uikit/uiscene
---

# UIScene

An object that represents one instance of your app’s user interface.

## Declaration

```swift
@MainActor class UIScene
```

## Mentioned in

Transitioning to the UIKit scene-based life cycle

## Overview

Overview UIKit creates a scene object for each instance of your app’s UI that the user or your app requests. Typically, UIKit creates a UIWindowScene object instead of a UIScene object, but you use the methods and properties of this class to access information about a scene. Every scene object has an associated delegate object, an object that adopts the UISceneDelegate protocol. When the state of the scene changes, the scene object notifies its delegate object and posts appropriate notifications to registered observer objects. Use the delegate object and notifications to respond to changes in the state of the scene. For example, use it to determine when your scene moves to the background. You don’t create scene objects directly. You can programmatically ask UIKit to create a scene object for your app by calling the requestSceneSessionActivation(_:userActivity:options:errorHandler:) method of UIApplication. UIKit also creates scenes in response to user interactions. When configuring your app’s scene support, specify UIWindowScene objects instead of UIScene objects.

## Topics

### Creating a scene object

- [init(session:connectionOptions:)](uikit/uiscene/init(session:connectionoptions:).md)

### Managing the life cycle of a scene

- [delegate](uikit/uiscene/delegate.md)
- [UISceneDelegate](uikit/uiscenedelegate.md)

### Getting the scene attributes

- [activationState](uikit/uiscene/activationstate-swift.property.md)
- [UIScene.ActivationState](uikit/uiscene/activationstate-swift.enum.md)
- [title](uikit/uiscene/title.md)
- [subtitle](uikit/uiscene/subtitle.md)

### Specifying the scene’s activation conditions

- [activationConditions](uikit/uiscene/activationconditions.md)
- [UISceneActivationConditions](uikit/uisceneactivationconditions.md)

### Specifying the scene’s destruction conditions

- [destructionConditions](uikit/uiscene/destructionconditions-9rfrj.md)

### Responding to life cycle notifications

- [willConnectNotification](uikit/uiscene/willconnectnotification.md)
- [didDisconnectNotification](uikit/uiscene/diddisconnectnotification.md)
- [willEnterForegroundNotification](uikit/uiscene/willenterforegroundnotification.md)
- [didActivateNotification](uikit/uiscene/didactivatenotification.md)
- [willDeactivateNotification](uikit/uiscene/willdeactivatenotification.md)
- [didEnterBackgroundNotification](uikit/uiscene/didenterbackgroundnotification.md)

### Working with system protection manager

- [systemProtectionManager](uikit/uiscene/systemprotectionmanager-swift.property.md)
- [UIScene.SystemProtectionManager](uikit/uiscene/systemprotectionmanager-swift.class.md)
- [systemProtectionDidChangeNotification](uikit/uiscene/systemprotectiondidchangenotification.md)

### Getting the scene’s session

- [session](uikit/uiscene/session.md)
- [UISceneSession](uikit/uiscenesession.md)

### Opening URLs

- [open(_:options:completionHandler:)](uikit/uiscene/open(_:options:completionhandler:).md)
- [UIScene.OpenExternalURLOptions](uikit/uiscene/openexternalurloptions.md)

### Supporting state restoration

- [completeStateRestoration()](uikit/uiscene/completestaterestoration().md)
- [extendStateRestoration()](uikit/uiscene/extendstaterestoration().md)

### Getting the pointer lock state

- [pointerLockState](uikit/uiscene/pointerlockstate.md)
- [UIPointerLockState](uikit/uipointerlockstate.md)

### Constants

- [UIScene.ActivationRequestOptions](uikit/uiscene/activationrequestoptions.md)
- [UISceneDestructionRequestOptions](uikit/uiscenedestructionrequestoptions.md)
- [UIScene.OpenURLOptions](uikit/uiscene/openurloptions.md)

### Structures

- [UIScene.DestructionCondition](uikit/uiscene/destructioncondition.md)
- [UIScene.DidActivateMessage](uikit/uiscene/didactivatemessage.md)
- [UIScene.DidEnterBackgroundMessage](uikit/uiscene/didenterbackgroundmessage.md)
- [UIScene.SystemProtectionDidChangeMessage](uikit/uiscene/systemprotectiondidchangemessage.md)
- [UIScene.WillConnectMessage](uikit/uiscene/willconnectmessage.md)
- [UIScene.WillDeactivateMessage](uikit/uiscene/willdeactivatemessage.md)
- [UIScene.WillEnterForegroundMessage](uikit/uiscene/willenterforegroundmessage.md)

### Instance Methods

- [getDefaultAudioSession(completionHandler:)](uikit/uiscene/getdefaultaudiosession(completionhandler:).md)

## Relationships

### Inherits From

- [UIResponder](uikit/uiresponder.md)

### Inherited By

- [UIWindowScene](uikit/uiwindowscene.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)
- [UIPasteConfigurationSupporting](uikit/uipasteconfigurationsupporting.md)
- [UIResponderStandardEditActions](uikit/uiresponderstandardeditactions.md)
- [UIUserActivityRestoring](uikit/uiuseractivityrestoring.md)

## See Also

### Window scenes

- [Supporting multiple windows on iPad](uikit/supporting-multiple-windows-on-ipad.md)
- [UIWindowSceneDelegate](uikit/uiwindowscenedelegate.md)
- [UIWindowScene](uikit/uiwindowscene.md)
- [UISceneDelegate](uikit/uiscenedelegate.md)
