SwiftUI/Protocol/Scene

From Azupedia
Revision as of 18:52, 11 November 2022 by imported>Fire (Created page with "{{Infobox Swift |name=Scene |Type=protocol |iOS=14.0 |iPadOS=14.0 |macOS=11.0 |MacCatalyst=14.0 |tvOS=14.0 |watchOS=7.0 |Website={{URL|https://developer.apple.com/documentation/swiftui/scene/}} }} アプリのユーザーインターフェースの一部で、システムによって管理されるライフサイクルのこと。 環境変数scenePhaseを使うと onChange のときに状態に応じた処理分岐がかけられる。 enum型で、下記値をとる...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Scene
Typeprotocol
iOS14.0+
iPadOS14.0+
macOS11.0+
MacCatalyst14.0+
tvOS14.0+
watchOS7.0+
Websitedeveloper.apple.com/documentation/swiftui/scene/

アプリのユーザーインターフェースの一部で、システムによって管理されるライフサイクルのこと。

環境変数scenePhaseを使うと onChange のときに状態に応じた処理分岐がかけられる。

enum型で、下記値をとる

.active
フォアグラウンドでインタラクティブな状態
.inactive
フォアグラウンドであるが作業がポーズ状態
.background
UIが現在表示されていない状態
struct MyScene: Scene {
    @Environment(\.scenePhase) private var scenePhase
    @StateObject private var cache = DataCache()

    var body: some Scene {
        WindowGroup {
            MyRootView()
        }
        .onChange(of: scenePhase) { newScenePhase in
            if newScenePhase == .background {
                cache.empty()
            }
        }
    }
}

External Link

【SwiftUI】Sceneプロトコルを読む