可可应用程序在运行应用程序的所有mac上创建透明视图

我正在使用Xcode的mac osx应用程序。我想在所有应用程序的顶部添加一个透明的全屏视图/窗口。这样我就可以在透明视图上“绘制”,并且在它后面将是任何应用程序,Safari,单词等等。可可应用程序在运行应用程序的所有mac上创建透明视图

我试着像下面

NSRect rect = [[NSScreen mainScreen] frame]; //this is full screen size, but still with the status bar like time, battery, etc. 

NSWindow *overlayWindow = [[NSWindow alloc]initWithContentRect:rect

styleMask:NSBorderlessWindowMask

backing:NSBackingStoreBuffered

defer:NO];

overlayWindow.backgroundColor = [NSColor redColor];

[self.window addChildWindow:overlayWindow ordered:NSWindowAbove];

这是我的Mac应用程序的一个新的全屏子窗口。但它不在我在我的Mac上运行的所有应用程序之上。

所以我的问题, 如何添加视图顶部的我的mac屏幕视图(不仅是我的应用程序的顶部视图)。 非常感谢!

回答:

这看起来像你想要的。

NSWindow- (void)setLevel:(NSInteger)windowLevel

有了这个有用的预先限定的水平。选一个你喜欢的。如果您只需要在上面或下面的其中一个水平之上添加或减少1。

#define NSNormalWindowLevel   kCGNormalWindowLevel 

#define NSFloatingWindowLevel kCGFloatingWindowLevel

#define NSSubmenuWindowLevel kCGTornOffMenuWindowLevel

#define NSTornOffMenuWindowLevel kCGTornOffMenuWindowLevel

#define NSMainMenuWindowLevel kCGMainMenuWindowLevel

#define NSStatusWindowLevel kCGStatusWindowLevel

#define NSModalPanelWindowLevel kCGModalPanelWindowLevel

#define NSPopUpMenuWindowLevel kCGPopUpMenuWindowLevel

#define NSScreenSaverWindowLevel kCGScreenSaverWindowLevel

#define NSDockWindowLevel kCGDockWindowLevel

回答:

请参阅Apple的FunkyOverlayWindow sample code。除了设置窗口级别之外,还需要设置其背景色以清除并将其设置为非透明。如果它是透明的,但您仍然希望它接收绘制的鼠标事件(而不是让它们通过窗口后面的窗口),则需要执行[window setIgnoresMouseEvents:NO]

回答:

我的问题是因为我没有将self.window设置为顶层。然后,我添加一个childview(设置在顶部)self.window。如果我只将childview设置为顶部,它什么也不做。

肯和史蒂夫的答案有理由。非常感谢。

以上是 可可应用程序在运行应用程序的所有mac上创建透明视图 的全部内容, 来源链接: utcz.com/qa/263814.html

回到顶部