要为 SwiftUI 的 DisclosureGroup 中的 chevron 添加填充,可以通过自定义 DisclosureGroupStyle 来实现。以下是一个示例代码:
struct ContentView: View {
@State private var isExpanded = false
var body: some View {
VStack {
DisclosureGroup("Disclosure", isExpanded: $isExpanded) {
Text("Content")
}
.padding()
.background(Color.white)
.cornerRadius(5)
.modifier(ChevronDisclosureGroupStyle())
}
.padding()
}
}
struct ChevronDisclosureGroupStyle: GroupBoxStyle {
func makeBody(configuration: Configuration) -> some View {
DisclosureGroupBox(configuration: configuration)
}
struct DisclosureGroupBox: View {
@Environment(\.colorScheme) private var colorScheme
@Environment(\.insetGroupedBackground) private var insetGroupedBackground
let configuration: ContentView.ChevronDisclosureGroupStyle.Configuration
var body: some View {
GroupBox(label: HStack {
Spacer()
configuration.label
.foregroundColor(.primary)
.font(.headline)
.padding(.vertical, 8)
Spacer()
Image(systemName: configuration.isExpanded ? "chevron.up" : "chevron.down")
.padding(8)
.foregroundColor(colorScheme == .dark ? .white : .black)
}
.padding(.horizontal, 8)
.background(insetGroupedBackground)
.onTapGesture {
withAnimation {
configuration.isOn.toggle()
}
}) {
configuration.content
}
}
}
}
在上述示例中,我们创建了一个自定义的 DisclosureGroupStyle,ChevronDisclosureGroupStyle,它继承自 GroupBoxStyle。然后,我们在 DisclosureGroup 中应用了该自定义样式。
自定义样式中的 DisclosureGroupBox 结构体定义了一个 GroupBox,其中包含了一个 HStack,其中包含了 label、一个 Spacer 和一个 chevron 图标。我们为 chevron 图标添加了 padding 和 foregroundColor,以添加填充并根据当前颜色方案设置颜色。
最后,在 ContentView 中我们使用了这个自定义的 DisclosureGroupStyle,并对整个视图进行了一些样式设置。
希望这可以帮助到你!
上一篇:不应通过props传递组件类型。
下一篇:不影响Ajax函数的URL重写