隐藏 DisclosureGroup 中的披露指示符/箭头

问题描述 投票:0回答:4

有人知道如何隐藏或删除出现在

DisclosureGroup
按钮末尾的 V 形或箭头吗?

ios swift swiftui
4个回答
9
投票

尝试:

        .buttonStyle(PlainButtonStyle()).accentColor(.clear).disabled(true)

如果您仍然需要使用该按钮,请删除禁用的部分。


3
投票

有两种 hacky 解决方案。使 V 形图案不可见或将其覆盖。如果您希望标签尾随,则使其不可见可能会产生诸如消耗空间之类的效果。

仅隐藏 V 形: 使整个显示组的强调颜色清晰,并使您需要的元素着色。

DisclosureGroup {
   ...
} label: {
  Text("FooBar").accentColor(.black) // @iOS 15: .tint()
}
.accentColor(.clear) // @iOS 15: .tint()

覆盖 V 形: 重要的是拥有

.withAnimation
VStack
HStack
+
Spacer
组合。

@State var isExpanded = false

DisclosureGroup(isExpanded: $isExpanded) {
   ...
} label: {
   label()
}
.overlay(
  VStack {
    HStack {
     label()
    }
    .background(Color.white)
    .onTapGesture { withAnimation { isExpanded.toggle() }}

    Spacer()
  }
)

@ViewBuilder func label() -> some View {
  Text("FooBar")
}

0
投票

由于我在这里没有看到正确的解决方案,所以我决定无论如何都展示它:)
从 iOS 15 开始,您可以在显示组上使用 前景样式修饰符。当使用两种颜色时,第二种颜色将负责箭头的颜色。这样,您可以使用透明颜色(Color.clear)轻松使箭头不可见。
当然,您可以使用 tint 修饰符,但是,在这种情况下,如果您使用 markdown 来标记链接,它将影响链接的颜色。如果色调修改器中的颜色变得透明,那么您的链接将变得透明(这基本上不是您想要的,可能)。
示例:

DisclosureGroup(...).foregroundStyle( .white, .clear )

在此示例中,组中的文本将为白色,链接颜色将为蓝色,并且箭头将消失。


-1
投票

使用

InsetGroupedListStyle()

List {
       xxxx
}.listStyle(InsetGroupedListStyle())
© www.soinside.com 2019 - 2024. All rights reserved.