使用 SwiftUI 在 macOS 中更改列表的突出显示颜色

iAl*_*x11 7 macos swiftui

我正在尝试使用 SwiftUI 为 macOS 制作一个简单的应用程序,我想添加一个侧边栏。我已经设法完美地制作了一个,但问题是我找不到改变List组件高亮颜色的方法。

如您所见,所选项目是红色的,但我希望它是灰色的,就像在 Finder 等大多数应用程序中一样。

总之,有没有办法使用 SwiftUI 更改 macOS 中列表的突出显示颜色?

请注意我没有使用 Catalyst

提前致谢

我的代码

SidebarView.swift

struct SidebarViewItem: View {

    let text: String
    let image: String

    var body: some View {
        HStack {
            if image == "Folder" || image == "Tray" {
                Image(image)
                .resizable()
                    .frame(width: 18, height: 15)
            } else if image == "Star" {
                Image(image)
                .resizable()
                    .frame(width: 20, height: 18)
            } else {
                Image(image)
                .resizable()
                    .frame(width: 20, height: 20)
            }
            Text("\(text)")
        }
    }
}

struct SidebarView: View {

    let items = ["Tray", "Folder", "Star"]

    var body: some View {

        return List {
            Text("Favorites")
                .foregroundColor(Color("sidebarAdaptiveColor"))
                .font(Font.system(size: 11, weight: .medium))

            ForEach(items, id: \.self) { item in
                NavigationLink(destination: DetailView(selection: item)) {
                    SidebarViewItem(text: "\(item)", image: item)
                }
            }.padding(.leading, 10)

            Text("Languages")
                .foregroundColor(Color("sidebarAdaptiveColor"))
                .font(Font.system(size: 11, weight: .medium))

            NavigationLink(destination: DetailView(selection: "Folder"))  {
                SidebarViewItem(text: "Hello", image: "Folder")
            }.padding(.leading, 10)
        }
        .listStyle(SidebarListStyle())
        .frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}
Run Code Online (Sandbox Code Playgroud)

内容视图.swift

struct DetailView: View {

    var selection: String

    var body: some View {
        containedView()
        .frame(maxWidth: .infinity, maxHeight: .infinity)
    }

    private func containedView() -> AnyView {
        switch selection {
        case "Folder":
            return AnyView(Text("?"))
        case "Star":
            return AnyView(Text("View 2"))
        case "Gear":
            return AnyView(Text("View 3"))
        default:
            return AnyView(Text("Some view here"))
        }
    }
}

struct ContentView: View {
    var body: some View {
        NavigationView {
            NotesSidebarView()
                .padding(.top)
            DetailView(selection: " Apple")
        }.navigationViewStyle(DoubleColumnNavigationViewStyle())
            .frame(minWidth: 700, maxWidth: .infinity, minHeight: 400, maxHeight: .infinity)
            .edgesIgnoringSafeArea(.top)
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 2

List您可以使用 SwiftUI 通过修改AccentColor项目资产目录中的轻松更改 macOS 中的突出显示颜色。

  1. 打开您的 Xcode 项目并导航到该Assets.xcassets文件夹​​。
  2. 找到AccentColorasset:这是 SwiftUI 默认情况下用于各种 UI 元素的颜色集,包括 的突出显示颜色List
  3. 修改颜色:在右侧,您将看到属性检查器,您可以在其中选择新颜色。选择您想要的灰色。

通过执行此操作,ListSwiftUI macOS 应用程序中组件的突出显示颜色将更改为您选择的灰色。