我想用以下代码减小列表的行高:
List(elements, id: \.id, children: \.children, selection: $selected) { element in
HStack {
Image(systemName: element.children != nil ? "folder" : "list.bullet.rectangle.portrait")
Text(element.name)
}
.padding(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
.listRowSeparator(.hidden, edges: .all)
.listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
}
.environment(\.defaultMinListRowHeight, 20)
.listStyle(.inset)
用户界面如下所示:
但我希望背景模糊。当我将
.listStyle(.inset)
更改为 .listStyle(.sidebar)
后,行高增加了。
无论我如何降低列表元素的填充或插入,行高都不会减少。我发现XCode已经做到了。
但是我找不到方法。
环境:
SwiftUI 列表样式的某些部分无法自定义。我建议继续使用
.inset
样式,并手动添加 NSVisualEffectView
作为背景。
struct BackgroundBlur : NSViewRepresentable {
func makeNSView(context: Context) -> NSVisualEffectView {
let view = NSVisualEffectView()
view.state = .active
return view
}
func updateNSView(_ view: NSVisualEffectView, context: Context) { }
}
.listStyle(.inset)
.scrollContentBackground(.hidden) // remember to hide the default background or else our own background will not be visible
.background {
BackgroundBlur().ignoresSafeArea()
}