SwiftUI 对悬停事件响应不太灵敏

Fac*_*uez 5 macos list hover swiftui

我正在尝试实现一个包含 200 或 300 个元素的列表,并且我想更改悬停事件上文本的颜色。但应用程序开始显示悬停事件的延迟。检查下面的示例代码:

struct ContentView: View {
    var body: some View {
            VStack {
                ForEach(0...1000, id:\.self) {index in
                    Element()
                }
            }
    }
}
Run Code Online (Sandbox Code Playgroud)
struct Element: View {
    @State private var hover = false

    var body: some View {
        Text("Not a fast hover!")
          .foregroundColor(hover ? Color.blue : Color.white)
          .onHover {_ in self.hover.toggle()}
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新:

这似乎提高了响应能力。此外,如果我更改背景而不是前景色,代码的响应速度也会更快。

struct Element: View {
    @State private var hover = false

    var body: some View {
        ZStack {
            Text("Not a fast hover!").foregroundColor(Color.blue)
            Text("Not a fast hover!").opacity(hover ? 0 : 1).foregroundColor(Color.white)
        }
        .frame(width: 200)
        .onHover {_ in self.hover.toggle()}
    }
}
Run Code Online (Sandbox Code Playgroud)

Fac*_*uez 2

解决方案是使用 List 组件而不是 VStack。