gpt4 book ai didi

objective-c - 将 NSWindow 拖动到高于菜单栏的位置

转载 作者:行者123 更新时间:2023-12-03 16:32:32 27 4
gpt4 key购买 nike

我制作了一个名为 Uberlayer 的应用程序。用户可以使用这个单一用途的 Mac 应用程序将图像叠加在其他应用程序之上。

我正在使用setMovableByWindowBackground允许通过其背景拖动整个窗口。

我想做一些改进,因为应用程序现在不能将窗口拖动到高于菜单栏的位置,这可能有点烦人。对于普通窗口,我可以想象将其锁定到菜单栏是一件好事,但对于这个用例来说,能够将其拖动到更高的位置将是一件好事。

有人知道如何更改此默认窗口行为吗?

最佳答案

而是使用 -setMovableByWindowBackground: 覆盖 -mouseDown: 事件,如下所示:

- (void)mouseDown:(NSEvent *)event
{
NSPoint originalMouseLocation = [window convertBaseToScreen:[event locationInWindow]];
NSRect originalFrame = [window frame];

while (YES)
{
NSEvent *newEvent = [window nextEventMatchingMask:(NSLeftMouseDraggedMask | NSLeftMouseUpMask)];

if ([newEvent type] == NSLeftMouseUp)
{
break;
}

NSPoint newMouseLocation = [window convertBaseToScreen:[newEvent locationInWindow]];
NSPoint delta = NSMakePoint(
newMouseLocation.x - originalMouseLocation.x,
newMouseLocation.y - originalMouseLocation.y);

NSRect newFrame = originalFrame;

newFrame.origin.x += delta.x;
newFrame.origin.y += delta.y;

[window setFrame:newFrame display:YES animate:NO];
}
}

** 不要忘记隐藏窗口的标题栏(选择窗口 -> 转到属性检查器 -> 取消选中标题栏),因为有了它,窗口不能高于菜单栏。或者其他解决方案是创建无边框窗口。

关于objective-c - 将 NSWindow 拖动到高于菜单栏的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555014/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com