【问题标题】:Set Color of Chevron in a SwiftUI List in a NavigationView在 NavigationView 的 SwiftUI 列表中设置雪佛龙的颜色
【发布时间】:2020-07-08 09:05:19
【问题描述】:

我有这个列表,我是 NavigationView。
在黑暗模式下,雪佛龙(红色圆圈)几乎看不见。

如何在列表中设置雪佛龙的颜色。

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")
    } )
  }
}

【问题讨论】:

    标签: swiftui swiftui-navigationlink


    【解决方案1】:

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

    这就是为什么它不会对任何变色修饰剂做出反应。

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

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

    【讨论】:

    • 然后,当您进入编辑模式时,重新发明的人字形仍然可见,因为为什么要考虑 UIKit 开箱即用支持的所有边缘情况,对吧?这绝不是一个好的解决方案。
    【解决方案2】:

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

    添加不透明度(0),它可以工作。

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

    【讨论】:

    • 这是正确答案。应该有更多的赞成票。
    【解决方案3】:

    您可以使用accentColor 属性:

    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")
          }.accentColor(.black)
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-08
      • 2023-03-28
      • 2019-12-21
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 2019-10-30
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多