微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。