NSWindow 和 setLevel,不能让“顶部”功能正常工作
Posted
技术标签:
【中文标题】NSWindow 和 setLevel,不能让“顶部”功能正常工作【英文标题】:NSWindow and setLevel, cant' get "on top" functionality working 【发布时间】:2022-01-07 03:39:01 【问题描述】:当两个窗口靠得很近时,您可以捕捉它们(窗口管理器会自动更正窗口的位置/大小并将它们捕捉在一起,请参见附图)
NSWindows 有等级:
[Window setLevel:kCGBaseWindowLevelKey]
我希望窗口始终位于顶部并且可以捕捉。我可以通过以下方式实现“***”功能:
[Window setLevel:kCGScreenSaverWindowLevelKey];
但是,现在窗口不可对齐。我怎样才能同时拥有可捕捉和“在顶部”。我已经尝试了所有可能的窗口级别,只有一个级别是可捕捉的,即 kCGBaseWindowLevelKey
【问题讨论】:
【参考方案1】:找到了答案。 两个窗口在同一位置,不同级别。
可以创建一个具有窗口级别 kCGBaseWindowLevelKey 的不可见窗口,并将其放在具有 kCGScreenSaverWindowLevelKey 级别的窗口的正下方。两个窗口在同一个地方,不同层次。
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSWindowStyleMask)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
if (self = [super initWithContentRect:contentRect styleMask:NSWindowStyleMaskBorderless backing:NSBackingStoreBuffered defer:NO])
[self setBackgroundColor:[NSColor clearColor]];
return self;
【讨论】:
以上是关于NSWindow 和 setLevel,不能让“顶部”功能正常工作的主要内容,如果未能解决你的问题,请参考以下文章