Reputation: 257
I am working on a mac osx application using Xcode. I would like to add a transparent full-screen view/window on top of all applications. So that I could 'draw' on the transparent view, and behind it will be whatever application, safari, word...etc.
I tried like the following
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];
It's a new full-screen child window of my mac-application. But it's not on top of all applications i am running on my mac.
So my question, How to add the view on top of my mac screen view(not only the top view of my application). Thanks so much!!!
Upvotes: 7
Views: 8632
Reputation: 90551
See Apple's FunkyOverlayWindow sample code. In addition to setting the window's level, you will need to set its background color to clear and set it to non-opaque. If it's transparent but you still want it to receive mouse events for drawing (rather than letting them pass through to the windows behind it), you'll need to do [window setIgnoresMouseEvents:NO]
.
Upvotes: 11
Reputation: 2217
This looks like what you want.
NSWindow
has - (void)setLevel:(NSInteger)windowLevel
With this useful predefined levels. Pick one you like. Add or subtract 1 if you want it just above or just below one of these levels.
#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
Upvotes: 4