【问题标题】:NSWindow and setLevel, cant' get "on top" functionality workingNSWindow 和 setLevel,不能让“顶部”功能正常工作
【发布时间】:2023-03-20 19:54:02
【问题描述】:

当两个窗口靠得很近时,您可以捕捉它们(窗口管理器会自动更正窗口的位置/大小并将它们捕捉在一起,请参见附图)

NSWindows 有等级:

[Window setLevel:kCGBaseWindowLevelKey]

我希望窗口始终位于顶部并且可以捕捉。我可以通过以下方式实现“顶级”功能:

[Window setLevel:kCGScreenSaverWindowLevelKey];

但是,现在窗口不可对齐。我怎样才能同时拥有可捕捉和“在顶部”。我已经尝试了所有可能的窗口级别,只有一个级别是可捕捉的,即 kCGBaseWindowLevelKey

【问题讨论】:

    标签: swift objective-c xcode


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多