在尝试使用SwiftUI在macOS应用程序中复制Finder和SF符号的行为时,我遇到了使用DisclosureGroup的困难。
下面是我当前的代码:
import SwiftUI
struct SidebarView: View {
@State private var companiesExpanded = false
var body: some View {
VStack{
DisclosureGroup(isExpanded: $companiesExpanded) {
NavigationLink(destination: CompaniesLibraryView()) {
Label("Water", systemImage: "drop")
}
NavigationLink(destination: CompaniesLibraryView()) {
Label("Sewage", systemImage: "toilet")
}
NavigationLink(destination: CompaniesLibraryView()) {
Label("Electricity", systemImage: "bolt")
}
} label: {
Text("Companies")
.font(.subheadline)
.fontWeight(.semibold)
}
}
}
}
字符串
在这段代码中,我尝试使用DisclosureGroup在侧栏中创建可折叠的部分,类似于在Finder和SF Symbols中看到的内容。但是,结果却不一样。DisclosureGroup确实可以折叠项目,但它缺少Finder侧栏的视觉外观和行为。
我将非常感谢任何帮助,以实现预期的行为。感谢您的帮助。
Finder折叠项目(目标):
的数据
SF符号(目标):
的
我的应用程序(实际):
的
2条答案
按热度按时间ogq8wdun1#
这里有一个解决一些问题的建议。
Label
左对齐.frame(..)
,.infinity
将使所有标签占据整个侧边栏的空间。Label
颜色.primary
label
给予一点填充label
颜色.secondary
Spacer
稳定动画字符串
您可以使用自定义DisclosureGroupStyle进行更多控制。
举例来说:How to make a custom DisclosureGroup (drop down) in SwiftUI?的
7gs2gvoe2#
通过将
.frame
与alignment: .top
添加到DisclosureGroup()
,DisclosureGroup()
将始终被推到顶部,并且在关闭后不会再次居中。字符串