我正在尝试实现一个包含 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 …Run Code Online (Sandbox Code Playgroud) 有什么想法可以避免下面的抖动吗?代码是这样的:
Text(format: "%02d:%02d", hours, minutes)
.frame(width: 100, alignment: .trailing)
Run Code Online (Sandbox Code Playgroud)

(框架比字符串大)
笔记:
01:11字符串的总长度小于(假设)00:00并且文本被移位。.trailing或.center不修复抖动。...对不时出现的东西感到好奇。我可以通过的末尾添加一个空白解决它String像这样"%02d:%02d "滑块代码(用于完成):
Slider(value: $totalTime, in: 0...9).frame(width: 150)
Run Code Online (Sandbox Code Playgroud)
从 Slider 值到 hh:mm 的转换:
Text(format: "%02d:%02d", hours, minutes)
.frame(width: 100, alignment: .trailing)
Run Code Online (Sandbox Code Playgroud)