MacOS 上的 SwiftUI - 如果列表中的元素为标准颜色,则将背景色设置为

问题描述

出于某些原因(请参阅:SwiftUI on MacOS Click-behavior),我必须将列表中线条的背景颜色明确设置为标准颜色。

首先,我有一个奇怪的发现
如果我在开头选择一行,则所选行的颜色为浅灰色。

enter image description here


单击一段时间后,所选行的颜色变为蓝色。

enter image description here

这是什么原因?
我怎样才能防止这种情况?

实际问题是:如何将 func standardBackgoundColors() 中的颜色设置为系统认值。

这是我的代码

struct ListColorTest: View {
  @State var sel :Int? = nil
  var body: some View {
    List(selection: $sel) {
      ColoredLine(lineNr:0,selection: $sel).tag(0)
      ColoredLine(lineNr:1,selection: $sel).tag(1)
      ColoredLine(lineNr:2,selection: $sel).tag(2)
      ColoredLine(lineNr:3,selection: $sel).tag(3)
      ColoredLine(lineNr:4,selection: $sel).tag(4)
      ColoredLine(lineNr:5,selection: $sel).tag(5)
    }
  }
}

struct ColoredLine: View {
  @Environment(\.colorScheme) var colorScheme: ColorScheme
  var lineNr : Int
  @Binding var selection : Int?
  
  var body: some View {
    HStack {
      Text("X: ")
      Text("some Text")
      Spacer()
    }
    .background( standardBackgoundColors()  )
    .onTapGesture(count: 1,perform: {
      print("Line clicked")
      selection = lineNr
    })
  }
  
  func standardBackgoundColors()->Color{
    if (selection == lineNr) {
      return colorScheme == .light  ? Color(#colorLiteral(red: 0.9764705896,green: 0.850980401,blue: 0.5490196347,alpha: 1)) : Color.black
    } else {
      return colorScheme == .light  ? Color(#colorLiteral(red: 0.8039215803,green: 0.8039215803,blue: 0.8039215803,alpha: 1)) : Color.black
    }
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)