我试图在 MacOS 上将光标更改为 SwiftUI 中的十字准线。
我已将以下代码放入 AppDelegate
applicationDidFinishLaunching()
函数中:
NSCursor.crosshair.set()
当应用程序加载时,我看到光标变为十字线,然后直接交换回标准指针。
很高兴听到我在这里做错了什么。
谢谢大家。
最佳答案
这不是 NSCursor
的工作方式。有一堆光标,因此任何标准(或非标准)控件都可以将自己的光标类型推到顶部并使该光标成为当前光标。所以你只需放置第一个光标,然后一些具有自己默认光标的标准 View 替换它。
由于 SwiftUI 现在不允许本地管理游标,解决方案可能是
a) 在 SwiftUI View 上设置/插入所需的光标出现/消失,或
b) 使用标准 NSHostingController
方法将光标 rect 添加到 NSView.addCursorRect
View 。
更新: 来自现有项目的一些快速演示(自定义按钮解决方案的一部分)
struct DemoCustomCursor: View {
var body: some View {
Button(action: {}) {
Text("Cross Button")
.padding(20)
.background(Color.blue)
}.buttonStyle(PlainButtonStyle())
.onHover { inside in
if inside {
NSCursor.crosshair.push()
} else {
NSCursor.pop()
}
}
}
}
关于SwiftUI 系统光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61984959/