我正在尝试创建一个将鼠标锁定在屏幕中央的游戏。为了完成这个任务,我找到了合适的方法:
CGWarpMouseCursorPosition
然后我搜索了如何获取
NSView
的中心并发现了这个:获取NSView的中心点
我使用了提供的答案,但得到了不正确的结果。无论窗口在哪里,鼠标移动到的点始终是距屏幕左上角框架宽度和高度的一半。就好像视图的
frame.origin
始终是 {0, 0}
,即使窗口位于其他位置。
在我的代码中,
window
是从实现NSWindowController
和NSWindowDelegate
继承的成员:
override func mouseMoved(with Event: NSEvent) {
if let window = window, let view = window.contentView {
let frame = view.frame
CGWarpMouseCursorPosition(CGPoint(x: frame.midX, y: frame.midY))
// ...
}
}
获取
NSView
中心点以与 CGWarpMouseCursorPosition()
函数一起使用的正确方法是什么?
就好像 window.contentView.frame.origin 始终为 {0, 0},尽管事实并非如此
是的。内容视图位于窗口“内部”,其原点位于窗口的角落。这就是为什么你不能设置内容视图的框架:它无处可去。
也许你想知道的是窗口自己的
frame
在哪里?