One Logo Pool Ball
SwiftUI · IOS API REFERENCE

DisclosureGroupStyle

protocol · iOS 16.0+ · SDK 27.1

@MainActor @preconcurrency protocol DisclosureGroupStyle

A type that specifies the appearance and interaction of disclosure groups within a view hierarchy. To configure the disclosure group style for a view hierarchy, use the ``View/disclosureGroupStyle(_:)`` modifier. To create a custom disclosure group style, declare a type that conforms to `DisclosureGroupStyle`. Implement the ``DisclosureGroupStyle/makeBody(configuration:)`` method to return a view that composes the elements of the `configuration` that SwiftUI provides to your method. struct MyDisclosureStyle: DisclosureGroupStyle { func makeBody(configuration: Configuration) -> some View { VStack { Button { withAnimation { configuration.isExpanded.toggle() } } label: { HStack(alignment: .firstTextBaseline) { configuration.label Spacer() Text(configuration.isExpanded ? "hide" : "show") .foregroundColor(.accentColor) .font(.caption.lowercaseSmallCaps()) .animation(nil, value: configuration.isExpanded) } .contentShape(Rectangle()) } .buttonStyle(.plain) if configuration.isExpanded { configuration.content } } } } A type conforming to this protocol inherits `@preconcurrency @MainActor` isolation from the protocol if the conformance is included in the type's base declaration: struct MyCustomType: Transition { // `@preconcurrency @MainActor` isolation by default } Isolation to the main actor is the default, but it's not required. Declare the conformance in an extension to opt out of main actor isolation: extension MyCustomType: Transition { // `nonisolated` by default }

Members (0)

This type has no directly callable members in this snapshot. See the framework’s skipped declarations for unsupported APIs.

Skipped declarations

1 declarations were excluded from these bindings. Each reason comes from the generator or the iOS SDK compiler.

DisclosureGroupStyle.automatic

Static protocol requirements cannot be called through an instance.

All SwiftUI types →