Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos SwiftUI对悬停事件的响应不是很快_Macos_List_Hover_Swiftui - Fatal编程技术网

Macos SwiftUI对悬停事件的响应不是很快

Macos SwiftUI对悬停事件的响应不是很快,macos,list,hover,swiftui,Macos,List,Hover,Swiftui,我正在尝试实现一个列表,其中包含200或300个元素,并且我希望在悬停事件中更改文本的颜色。但应用程序开始显示悬停事件的延迟。检查下面的示例代码: struct ContentView:View{ var body:一些观点{ VStack{ ForEach(0…1000,id:\.self){中的索引 元素() } } } } struct元素:视图{ @状态私有变量hover=false var body:一些观点{ 文本(“不是快速悬停!”) .foregroundColor(悬停?颜色

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

struct ContentView:View{
var body:一些观点{
VStack{
ForEach(0…1000,id:\.self){中的索引
元素()
}
}
}
}
struct元素:视图{
@状态私有变量hover=false
var body:一些观点{
文本(“不是快速悬停!”)
.foregroundColor(悬停?颜色。蓝色:颜色。白色)
.onHover{in self.hover.toggle()}
}
}

更新:

这似乎提高了响应能力。另外,如果我改变背景而不是前景色,代码的响应性也会更好

struct元素:视图{
@状态私有变量hover=false
var body:一些观点{
ZStack{
文本(“不是快速悬停!”).foregroundColor(Color.blue)
文本(“不是快速悬停!”)。不透明度(悬停?0:1)。前底色(颜色。白色)
}
.框架(宽度:200)
.onHover{in self.hover.toggle()}
}
}

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

您还尝试了什么?在
VStack
中使用1000个视图确实不是任何人在1.0版框架中都会做的事情。例如,假设列表的局限性与之类似,你是否尝试过将事物分组?我有一个可能超过10000项的列表。但目前代码在100处开始阻塞(可能是因为每个项都有多个Text()组件)。我试过分组,是的,但没有成功。两个想法。首先,列表中有10个项目的限制。解决方法是使用组。请看这里的第五个提示:(2)虽然列表与UITableView类似,只是更具声明性,更易于编码,但请记住,我们处于SwiftUI的早期。无论您希望如何显示10000个视图,即使是使用可重用的行,我都非常肯定您会遇到各种问题,包括修改器的性能比其他修改器更好。这样的东西在UIKit中的表现如何?