如何在 macOS 上正确实现 SwiftUI 列表中的分隔符

mor*_*wan 5 macos xcode swift swiftui swiftui-list

在 macOS 上使用 SwiftUI 时,列表中似乎没有默认分隔符。所以我使用 Divider 手动添加。但是当我启用多行选择时,应用程序将自动渲染一条白线。而且分隔线和白线同时存在似乎很奇怪。

是否有使用 SwiftUI 在 macOS 上实现行分隔符的最佳实践方法?或者我可以通过选择删除默认的白线渲染吗?

  1. 添加分隔线 在此输入图像描述

  2. 带分隔符的多项选择 在此输入图像描述

  3. 不带分隔符的多项选择 在此输入图像描述

struct WelcomeView: View {
    let contents = ["aaa", "bbb", "ccc"]
    @State var selection = Set<String>()

    var body: some View {
        List(selection: $selection) {
            Section(header: Text("header")) {
                ForEach(contents, id: \.self) { row in
                    VStack {
                        Text(row)

//                        Divider()
                    }
                }
            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 2

在 macOS 13 或更高版本中,您现在可以使用 listRowSeparator 修饰符,如下所示:

List {
    ForEach(garage.cars) { car in
        Text(car.model)
            .listRowSeparator(.visible)
    }
}
Run Code Online (Sandbox Code Playgroud)