不影响 SwiftUI 的 DisclosureGroup 内容的情况下为 chevron 添加填充
创始人
2025-01-11 07:00:06
0

要为 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,并对整个视图进行了一些样式设置。

希望这可以帮助到你!

相关内容

热门资讯

记者揭秘!智星菠萝辅助(透视辅... 记者揭秘!智星菠萝辅助(透视辅助)拱趴大菠萝辅助神器,扑克教程(有挂细节);模式供您选择,了解更新找...
一分钟揭秘!约局吧能能开挂(透... 一分钟揭秘!约局吧能能开挂(透视辅助)hhpoker辅助靠谱,2024新版教程(有挂教学);约局吧能...
透视辅助!wepoker模拟器... 透视辅助!wepoker模拟器哪个好用(脚本)hhpoker辅助挂是真的,科技教程(有挂技巧);囊括...
透视代打!hhpkoer辅助器... 透视代打!hhpkoer辅助器视频(辅助挂)pokemmo脚本辅助,2024新版教程(有挂教程);风...
透视了解!约局吧德州真的有透视... 透视了解!约局吧德州真的有透视挂(透视脚本)德州局HHpoker透视脚本,必胜教程(有挂分析);亲,...
六分钟了解!wepoker挂底... 六分钟了解!wepoker挂底牌(透视)德普之星开辅助,详细教程(有挂解密);德普之星开辅助是一种具...
9分钟了解!wpk私人辅助(透... 9分钟了解!wpk私人辅助(透视)hhpoker德州透视,插件教程(有挂教学);风靡全球的特色经典游...
推荐一款!wepoker究竟有... 推荐一款!wepoker究竟有透视(脚本)哈糖大菠萝开挂,介绍教程(有挂技术);囊括全国各种wepo...
每日必备!wepoker有人用... 每日必备!wepoker有人用过(脚本)wpk有那种辅助,线上教程(有挂规律);wepoker有人用...
玩家必备教程!wejoker私... 玩家必备教程!wejoker私人辅助软件(脚本)哈糖大菠萝可以开挂,可靠技巧(有挂神器)申哈糖大菠萝...