如何解决MacOS 上的 SwiftUI - 如果列表中的元素为标准颜色,则将背景色设置为
出于某些原因(请参阅:SwiftUI on MacOS Click-behavior),我必须将列表中线条的背景颜色明确设置为标准颜色。
首先,我有一个奇怪的发现:
如果我在开头选择一行,则所选行的颜色为浅灰色。
单击一段时间后,所选行的颜色变为蓝色。
这是什么原因?
我怎样才能防止这种情况?
实际问题是:如何将 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 举报,一经查实,本站将立刻删除。