Macos 快捷键-更改光标
Edit:如@Asperi所述,这是正确的。我需要使用视图/控件,而不是形状 当我将光标悬停在元素上时,我试图将光标更改为指针。 我看了这个,但它对我不起作用 这是我的密码Macos 快捷键-更改光标,macos,swiftui,Macos,Swiftui,Edit:如@Asperi所述,这是正确的。我需要使用视图/控件,而不是形状 当我将光标悬停在元素上时,我试图将光标更改为指针。 我看了这个,但它对我不起作用 这是我的密码 struct CursorTestView: View { @State private var hover: Bool = false var body: some View { ZStack { RoundedRectangle(cornerRadius
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))
}
}
对我遗漏的东西有什么建议吗
谢谢我注意到视图渲染了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))
}
}
struct CursorTestView:View{
@状态私有变量悬停:Bool=false
var body:一些观点{
ZStack{
圆角转角(拐角半径:5)
.填充(悬停?颜色。绿色:颜色。蓝色)
.框架(宽:100,高:50)
.onHover{i在
self.hover=isHovered
DispatchQueue.main.async{//引用文章中的解决方案仍然有效。使用Xcode 12.5/macOS 11.3进行测试。可能是因为使用了按钮,它是一个控件。所以尝试使用按钮(可能是自定义样式),而不仅仅是形状/视图。啊-是的,它适用于按钮。我假设它适用于所有类型的视图(主要使用webapp,我想我被宠坏了)。编辑:刚刚意识到RoundedRectangle是一个形状,而不是一个ViewWow-发布到主要作品的形状。棒极了,但奇怪的是它是必需的。哦,所以更新@State变量会导致重新渲染,这就是为什么需要发布它?是的。我认为更新@State会造成问题。