隐藏 SwiftUI DisclosureGroup 箭头并删除默认填充

Posted

技术标签:

【中文标题】隐藏 SwiftUI DisclosureGroup 箭头并删除默认填充【英文标题】:Hide SwiftUI DisclosureGroup Arrow and Remove Default Padding 【发布时间】:2021-02-09 04:52:19 【问题描述】:

我正在尝试在 SwiftUI 中创建一个包含项目的可扩展部分的完全自定义列表。这就是我希望它最终的样子:

我认为我的 SwiftUI 代码设置正确,但我无法找到视图修饰符来完成我想要的。

为简洁起见,这是我删除了大部分样式修饰符的代码:

List 
  ForEach(sections, id: \.self)  section in
  
    DisclosureGroup(isExpanded: $expand) 
      ForEach(section.projectArray, id: \.self)  project in
        //--- Projects ---
        HStack
          Image("project")
          Text(project.wrappedName)
          Spacer()
        
        .padding(EdgeInsets(top: 0, leading: 0, bottom:0, trailing: 0))
       
     label: 
      //--- Sections ---
      HStack
        Text(section.wrappedName)
        Spacer()
        //Custom Toggle Arrow
        Button(action: 
          //Toggle logic
        )
          if expand
            Image("section-open")
          else
            Image("section-closed")
          
        
      
      .padding(0)
    
   
.listStyle(PlainListStyle())

我找不到任何可以更改 DisclosureGroup 的东西来添加一些我不想要的默认样式:

A - 默认展开/折叠箭头

B - 展开时,DisclosureGrouplabel 水平增长

C - 子元素的默认填充

我检查了the docs,但没有找到删除这些默认样式的方法。有什么想法可以完成这个设计吗?

【问题讨论】:

【参考方案1】:

使用

.listRowInsets(EdgeInsets())

【讨论】:

以上是关于隐藏 SwiftUI DisclosureGroup 箭头并删除默认填充的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中动态隐藏视图

SwiftUI:模态表隐藏 ProgressView

Swiftui 隐藏披露箭头

SwiftUI 没有隐藏动画

SwiftUI - 视图获取隐藏在导航栏下

SwiftUI隐藏List分隔符的不同方法