元のドキュメント: developer.apple.com/documentation/swiftui/togglestyle/makebody(configuration:)


インスタンスメソッド


makeBody(configuration:)


トグルの本体を表すビューを作成します。


iOS 13.0+ iPadOS 13.0+ Mac Catalyst 13.0+ macOS 10.15+

tvOS 13.0+ visionOS 1.0+ watchOS 6.0+

@ViewBuilder @MainActor @preconcurrency
func makeBody(configuration: Self.Configuration) -> Self.Body

必須





パラメータ


configuration

トグルのプロパティ。ラベルやトグルの状態への結合などが含まれます。


戻り値


Toggle として機能するための動作と外観を備えたビュー。


議論


ToggleStyle プロトコルに準拠するカスタムトグルスタイルを定義する際には、このメソッドを実装してください。Configuration 入力(ToggleStyleConfiguration インスタンス)を使用して、トグルのラベルと状態にアクセスします。トグルの外観と動作を持つビューを返します。たとえば、ラベルと、空の円またはチェックマークで塗りつぶされた円を表示するトグルを作成できます。


struct ChecklistToggleStyle: ToggleStyle {
    func makeBody(configuration: Configuration) -> some View {
        Button {
            configuration.isOn.toggle()
        } label: {
            HStack {
                Image(systemName: configuration.isOn
                        ? "checkmark.circle.fill"
                        : "circle")
                configuration.label
            }
        }
        .tint(.primary)
        .buttonStyle(.borderless)
    }
}

ChecklistToggleStyle のトグルスタイルは、トグルの状態を確認したり変更したりする方法を提供します。円が塗りつぶされるとオンの状態になり、ユーザーはトグルをタップまたはクリックして状態を変更できます。カスタム化された Button を使用してトグルの本体を構成することで、SwiftUI はボタンのような特性を持つコントロールにユーザーが期待する動作を自動的に提供します。


このスタイルを使用するトグルのコレクションをスタックとして表示できます。



ビュー階層を更新する際、システムは関連したスタイルを使用する各 Toggle インスタンスに対して、makeBody(configuration:) メソッドの実装を呼び出します。



現在のスタイルを変更する


まったく新しいスタイルを作成する代わりに、トグルの現在のスタイルを変更することもできます。makeBody(configuration:) メソッド内で init(_:) イニシャライザーを使用すると、configuration 値に基づいてトグルを作成および変更できます。たとえば、現在のスタイルにパディングと赤い枠線を追加するスタイルを作成できます。


struct RedBorderToggleStyle: ToggleStyle {
    func makeBody(configuration: Configuration) -> some View {
        Toggle(configuration)
            .padding()
            .border(.red)
    }
}

このスタイルから redBorder という静的変数を作成すると、組み込みの switchbutton のスタイルなど、既に別のスタイルを使用しているトグルにもそのスタイルを適用できます。


Toggle("Switch", isOn: $isSwitchOn)
    .toggleStyle(.redBorder)
    .toggleStyle(.switch)

Toggle("Button", isOn: $isButtonOn)
    .toggleStyle(.redBorder)
    .toggleStyle(.button)

どちらのトグルも通常のスタイルで表示されていますが、それぞれに赤い枠線が付いています。



カスタムスタイルは、変更したスタイルよりもトグルに近い位置に適用してください。SwiftUI はスタイルビュー修飾子を外側から内側の順に評価するためです。スタイルを他の順序で適用すると、組み込みスタイルによって赤い枠線スタイルが完全に上書きされてしまい、効果がありません。





以下も見よ


カスタムトグルスタイルの作成


struct ToggleStyleConfiguration

トグルインスタンスのプロパティ。


typealias Configuration

トグルインスタンスのプロパティ。


associatedtype Body : View

トグルの外観と操作性を表すビュー。

必須














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ