Eth*_*Kay 7 macos swift swiftui
在本机运行的 macOS 上(不在催化剂模式下),启用选择的 SwiftUI 列表具有多种样式状态,这些状态由我似乎无法访问的隐式变量控制。因此,foregroundColor
列表中视图的自定义行为会不稳定。特别是,给出下面的示例,理论上总共应该有 3 种样式状态,但实际上第 2 项实际上有 5 种可能的样式状态:
如何控制 B、D、E 状态下的前景色?对于情况 D 和 E,似乎 macOS 列表选择上存在某种内置的去抖功能,导致在首次单击后实际被选中之前出现短暂的延迟。是否有类似未反跳isHighlighted
属性之类的东西?显然,内置系统正在使用类似的东西,因为无论去抖如何,非自定义列表标签颜色都会立即从黑色切换到白色,如上面状态 5 中的项目 1 所示。对于情况 B,也许有不同的颜色属性而不是foregroundColor
我需要使用的颜色属性?
非常感谢任何建议!
最低限度可重现的示例(在 macOS 本机上运行,而不是在 Catalyst 上运行):
@main
struct ExampleApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
@State private var selected: String?
var body: some View {
NavigationView {
List {
NavigationLink(destination: Text("Detail 1"), tag: "1", selection: $selected) {
Label("Item 1", systemImage: "tag")
}
NavigationLink(destination: Text("Detail 2"), tag: "2", selection: $selected) {
Label {
Text("Item 2")
.foregroundColor(selected == "2" ? nil : .blue)
} icon: {
Image(systemName: "tag")
.foregroundColor(selected == "2" ? nil : .blue)
}
}
}
.toolbar {
Button {
} label: {
Image(systemName: "sidebar.left")
}
}
}
.navigationTitle("Test")
.listStyle(.sidebar)
}
}
Run Code Online (Sandbox Code Playgroud)
以上样式状态截图均来自此示例:
归档时间: |
|
查看次数: |
468 次 |
最近记录: |