有人知道如何隐藏或删除出现在
DisclosureGroup
按钮末尾的 V 形或箭头吗?
尝试:
.buttonStyle(PlainButtonStyle()).accentColor(.clear).disabled(true)
如果您仍然需要使用该按钮,请删除禁用的部分。
有两种 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")
}
由于我在这里没有看到正确的解决方案,所以我决定无论如何都展示它:)
从 iOS 15 开始,您可以在显示组上使用 前景样式修饰符。当使用两种颜色时,第二种颜色将负责箭头的颜色。这样,您可以使用透明颜色(Color.clear)轻松使箭头不可见。
当然,您可以使用 tint 修饰符,但是,在这种情况下,如果您使用 markdown 来标记链接,它将影响链接的颜色。如果色调修改器中的颜色变得透明,那么您的链接将变得透明(这基本上不是您想要的,可能)。
示例:
DisclosureGroup(...).foregroundStyle( .white, .clear )
在此示例中,组中的文本将为白色,链接颜色将为蓝色,并且箭头将消失。
使用
InsetGroupedListStyle()
List {
xxxx
}.listStyle(InsetGroupedListStyle())