在NavigationView的SwiftUI列表中设置Chevron的颜色

时间:2020-03-27 15:31:23

标签: swiftui swiftui-navigationlink

我有一个导航视图。
在黑暗模式下,人字形(红色圆圈)几乎不可见。

enter image description here 如何在列表中设置V形的颜色。

struct ContentView: View {
    var body: some View {
      NavigationView{
        List {
          Line(text: "Line 1")
          Line(text: "Line 2")
          Line(text: "Line 3",selected: true)
          Line(text: "Line 4")
          Line(text: "Line 5")
        }
      }
    }
}

struct Line: View {
  var text :String
  var selected = false
  @Environment(\.colorScheme) var colorScheme

  var body: some View {
    NavigationLink(destination: Text("D")) { Text(text)}
      .listRowBackground(selected ? Color.blue : Color(.systemBackground))
      .foregroundColor(selected ? Color.white : Color(.label))
    .onTapGesture(perform: {print ("tap")
    } )
  }
}

2 个答案:

答案 0 :(得分:4)

标准人字形不是光栅图像的符号,而是

demo1

这就是为什么它不对任何变色修饰剂起反应的原因。

解决方案,禁用标准人字形并使用自己的自定义(列表的行为相同),如下所示

HStack {
    Text(text)
    NavigationLink(destination: Text("D")) { EmptyView() } // disabled  !
    Image(systemName: "chevron.right")                     // << custom !!
        .foregroundColor(Color.red)                        // any color !!!
}

demo2

答案 1 :(得分:1)

在我的环境中,默认人字形显示在自定义人字形下。

添加不透明度(0),就可以了。

NavigationLink(destination: Text("D")) { EmptyView() }
    .opacity(0) // Add this