Leo*_*etz 6 macos cocoa nsview nswindow swift
我有一个NSWindow,我在上面申请:
window.styleMask = window.styleMask | NSFullSizeContentViewWindowMask
window.titleVisibility = NSWindowTitleVisibility.Hidden;
window.titlebarAppearsTransparent = true;
Run Code Online (Sandbox Code Playgroud)
然后我在标题栏后面添加一个NSView来模拟一个更大的.现在它看起来像这样:

我希望能够通过拖动浅蓝色视图来移动窗口.我已经尝试子类化NSView并使用以下代码始终为mouseDownCanMoveWindow返回true:
class LSViewD: NSView {
override var mouseDownCanMoveWindow:Bool {
get {
return true
}
}
}
Run Code Online (Sandbox Code Playgroud)
这没用.经过一些谷歌搜索后,我在GitHub上找到了这个INAppStoreWindow.但它不支持超过10.9的OS X版本,所以它对我来说完全没用.
EDIT1
这就是它在Interface Builder中的外观.

如何通过拖动此NSView来移动窗口?
Osk*_*kar 14
这里没有一个答案对我有用。它们要么根本不起作用,要么使整个窗口可拖动(请注意,OP 并没有要求这样做)。
以下是实际实现这一目标的方法:
要使 NSView 使用其拖动事件控制窗口,只需将其子类化并覆盖mouseDown如下:
class WindowDragView: NSView {
override public func mouseDown(with event: NSEvent) {
window?.performDrag(with: event)
}
}
Run Code Online (Sandbox Code Playgroud)
就是这样。该mouseDown函数将进一步的事件跟踪传输到它的父窗口。
不需要窗口遮罩,isMovableByWindowBackground或mouseDownCanMoveWindow.
| 归档时间: |
|
| 查看次数: |
4194 次 |
| 最近记录: |