ScenePhase
enum · iOS 14.0+ · SDK 27.1
enum ScenePhaseAn indication of a scene's operational state. The system moves your app's ``Scene`` instances through phases that reflect a scene's operational state. A scene's operational state can vary depending on what platform it's on and whether it's in the foreground, minimized, in the app switcher, or in the background. You can perform actions when the phase changes. Read the current phase by observing the ``EnvironmentValues/scenePhase`` value in the ``Environment``: @Environment(\.scenePhase) private var scenePhase How you interpret the value depends on where it's read from. If you read the phase from inside a ``View`` instance, you obtain a value that reflects the phase of the scene that contains the view. The following example uses the ``View/onChange(of:initial:_:)-8wgw9`` method to enable a timer whenever the enclosing scene enters the ``ScenePhase/active`` phase and disable the timer when entering any other phase: struct MyView: View { @ObservedObject var model: DataModel @Environment(\.scenePhase) private var scenePhase var body: some View { TimerView() .onChange(of: scenePhase) { model.isTimerRunning = (scenePhase == .active) } } } If you read the phase from within an ``App`` instance, you obtain an aggregate value that reflects the phases of all the scenes in your app. The app reports a value of ``ScenePhase/active`` if any scene is active, or a value of ``ScenePhase/inactive`` when no scenes are active. This includes multiple scene instances created from a single scene declaration; for example, from a ``WindowGroup``. When an app enters the ``ScenePhase/background`` phase, expect the app to terminate soon after. You can use that opportunity to free any resources: @main struct MyApp: App { @Environment(\.scenePhase) private var scenePhase var body: some Scene { WindowGroup { MyRootView() } .onChange(of: scenePhase) { if scenePhase == .background { // Perform cleanup when all scenes within // MyApp go to the background. } } } }
Members (0)
This type has no directly callable members in this snapshot. See the framework’s skipped declarations for unsupported APIs.
Skipped declarations
No declarations were skipped in this snapshot.