DisclosureGroupStyle
protocol · iOS 16.0+ · SDK 27.1
@MainActor @preconcurrency protocol DisclosureGroupStyleA 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.