NSWindow 和 setLevel,无法使 "on top" 功能正常工作
NSWindow and setLevel, cant' get "on top" functionality working
当两个 windows 靠得很近时,您可以将它们合在一起(window 管理员自动更正 windows position/sizes 并将它们合在一起,见附图)
NSWindows 级别:
[Window setLevel:kCGBaseWindowLevelKey]
我希望 window 始终位于顶部并可捕捉。我可以通过以下方式实现“顶层”功能:
[Window setLevel:kCGScreenSaverWindowLevelKey];
但是,现在 window 无法捕捉。我怎样才能同时拥有可捕捉和“在顶部”。 window层级我都试过了,只有一个层级可以snapable,就是kCGBaseWindowLevelKey
找到答案。
两个windows在同一地点不同等级
可以创建一个 window 具有 window 级别 kCGBaseWindowLevelKey 的不可见 window 并将其放在具有 kCGScreenSaverWindowLevelKey 级别的 window 正下方。两个windows在同一个地方不同等级
- (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;
}
当两个 windows 靠得很近时,您可以将它们合在一起(window 管理员自动更正 windows position/sizes 并将它们合在一起,见附图)
NSWindows 级别:
[Window setLevel:kCGBaseWindowLevelKey]
我希望 window 始终位于顶部并可捕捉。我可以通过以下方式实现“顶层”功能:
[Window setLevel:kCGScreenSaverWindowLevelKey];
但是,现在 window 无法捕捉。我怎样才能同时拥有可捕捉和“在顶部”。 window层级我都试过了,只有一个层级可以snapable,就是kCGBaseWindowLevelKey
找到答案。 两个windows在同一地点不同等级
可以创建一个 window 具有 window 级别 kCGBaseWindowLevelKey 的不可见 window 并将其放在具有 kCGScreenSaverWindowLevelKey 级别的 window 正下方。两个windows在同一个地方不同等级
- (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;
}