编辑:正如@Asperi 提到的,这是正确的。我需要使用视图/控件,而不是形状
当我将鼠标悬停在元素上时,我试图将光标更改为指针。我看了这个,但它对我不起作用 SwiftUI System Cursor
这是我的代码
struct CursorTestView: View {
@State private var hover: Bool = false
var body: some View {
ZStack {
RoundedRectangle(cornerRadius: 5)
.fill(hover ? Color.green : Color.blue)
.frame(width: 100, height: 50)
.onHover(perform: { hovering in
self.hover = hovering
if (hover) {
NSCursor.pointingHand.push()
} else {
NSCursor.pop()
}
})
}
.frame(width: 400, height: 400, alignment: .center)
.background(Color.yellow.opacity(0.2))
}
}
Run Code Online (Sandbox Code Playgroud)
对我所缺少的有什么建议吗?
谢谢
我注意到视图渲染了 2 次,因此使用主队列。
struct CursorTestView: View {
@State private var hover: Bool = false
var body: some View {
ZStack {
RoundedRectangle(cornerRadius: 5)
.fill(hover ? Color.green : Color.blue)
.frame(width: 100, height: 50)
.onHover { isHovered in
self.hover = isHovered
DispatchQueue.main.async { //<-- Here
if (self.hover) {
NSCursor.pointingHand.push()
} else {
NSCursor.pop()
}
}
}
}
.frame(width: 400, height: 400, alignment: .center)
.background(Color.yellow.opacity(0.2))
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不更新悬停变量,它也将起作用。
| 归档时间: |
|
| 查看次数: |
2618 次 |
| 最近记录: |