Structure

EnvironmentValues

A collection of environment values propagated through a view hierarchy. ビュー階層を通して伝播される環境値それらからなるあるコレクション。

Declaration 宣言

struct EnvironmentValues

Overview 概要

SwiftUI exposes a collection of values to your app’s views in an EnvironmentValues structure. To read a value from the structure, declare a property using the Environment property wrapper and specify the value’s key path. For example, you can read the current locale: SwiftUIは、いくつかの値からなるあるコレクションを、あなたのアプリのもつビューへと、EnvironmentValues構造体において露出します。構造体からある値を読み出すには、あるプロパティをEnvironmentプロパティラッパーを使って宣言して、そして値のもつキーパスを指定してください。例えば、あなたは現在のロケールを読み出せます:


@Environment(\.locale) var locale: Locale

Use the property you declare to dynamically control a view’s layout. SwiftUI automatically sets or updates many environment values, like pixelLength, scenePhase, or locale, based on device characteristics, system state, or user settings. For others, like lineLimit, SwiftUI provides a reasonable default value. あなたが宣言するプロパティを使うことで、あるビューのもつレイアウトを動的に制御してください。SwiftUIは、pixelLengthscenePhase、またはlocaleのような多くの環境値を、機器の特徴、システム状態、またはユーザ設定に基づいて自動的に設定または更新します。他のものに対して、たとえばlineLimitなどに、SwiftUIは理にかなった省略時の値を提供します。

You can set or override some values using the environment(_:_:) view modifier: あなたは、いくつかの値をenvironment(_:_:)ビュー修飾子を使って設定またはオーバーライドできます:


MyView()
    .environment(\.lineLimit, 2)

The value that you set affects the environment for the view that you modify — including its descendants in the view hierarchy — but only up to the point where you apply a different environment modifier. あなたが設定する値は、あなたが修正するビューに対する環境に影響を及ぼします — それのビュー階層における子孫を含めて — しかしあなたがある異なる環境修飾子を適用するところの地点までに限ります。

SwiftUI provides dedicated view modifiers for setting some values, which typically makes your code easier to read. For example, rather than setting the lineLimit value directly, as in the previous example, you should instead use the lineLimit(_:) modifier: SwiftUIは、専用のビュー修飾子をいくつかの値の設定に対して提供します、それは概してあなたのコードをより読みやすくするものです。例えば、以前の例でのようにlineLimit値を直接に設定するよりも、あなたはlineLimit(_:)修飾子を代わりに使うべきです:


MyView()
    .lineLimit(2)

In some cases, using a dedicated view modifier provides additional functionality. For example, you must use the preferredColorScheme(_:) modifier rather than setting colorScheme directly to ensure that the new value propagates up to the presenting container when presenting a view like a popover: いくつかの場合において、専用ビュー修飾子を使うことは、追加の機能性を提供します。例えば、あなたはpreferredColorScheme(_:)修飾子を使わなければなりません、colorSchemeを直接に設定するのではなくて、そうして新しい値がその提示コンテナに至るまで伝播することをポップオーバーのような値を提示している時に確実にします。


MyView()
    .popover(isPresented: $isPopped) {
        PopoverContent()
            .preferredColorScheme(.dark)
    }

Create custom environment values by defining a type that conforms to the EnvironmentKey protocol, and then extending the environment values structure with a new property. Use your key to get and set the value, and provide a dedicated modifier for clients to use when setting the value: あつらえの環境値を、EnvironmentKeyプロトコルに準拠する型を定義すること、そしてそれから環境値構造体を新しいプロパティで拡張することによって作成してください。あなたのキーを使って値を取得および設定してください、そしてある専用修飾子をクライアントに提供して値を設定する時に使ってください:


private struct MyEnvironmentKey: EnvironmentKey {
    static let defaultValue: String = "Default value"
}


extension EnvironmentValues {
    var myCustomValue: String {
        get { self[MyEnvironmentKey.self] }
        set { self[MyEnvironmentKey.self] = newValue }
    }
}


extension View {
    func myCustomValue(_ myCustomValue: String) -> some View {
        environment(\.myCustomValue, myCustomValue)
    }
}

Clients of your value then access the value in the usual way, reading it with the Environment property wrapper, and setting it with the myCustomValue view modifier. あなたの値のクライアントは、それからその値に通常の方法でアクセスします、それをEnvironmentプロパティラッパーで読み出すこと、そしてそれをmyCustomValueビュー修飾子で設定することで。

Topics 話題

Creating and Accessing Values

Accessibility アクセシビリティ

Actions

Display Characteristics

Global Objects

State 状態

Text Styles

View Attributes

Deprecated Environment Values

Relationships 関係

Conforms To 次に準拠

See Also 参照

Environment Data 環境データ