Я пытаюсь реализовать список, в котором у меня есть 200 или 300 элементов, и я хочу изменить цвет текста в событии наведения мыши. Но приложение начинает показывать задержку на парящих событиях. Проверьте приведенный ниже пример кода:
struct ContentView: View {
var body: some View {
VStack {
ForEach(0...1000, id:\.self) {index in
Element()
}
}
}
}
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()}
}
}
ОБНОВЛЕНИЕ:
Это, кажется, улучшает отзывчивость. Кроме того, если я изменю фон вместо цвета переднего плана, код также будет более отзывчивым.
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()}
}
}