可可应用程序在运行应用程序的所有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