Самый элегантный способ создания полноэкранного оверлея в Mac OS X (Lion)?

Я ищу "лучшее" способ создания полноэкранного оверлея в Mac OS X. Я хочу создать прозрачный или полупрозрачный оверлей, который заботится о событиях мыши и показывает другие элементы ввода / вывода.

Это наложение должно располагаться над всеми другими элементами графического интерфейса (например, наложение CMD-Tab).

Вы знаете, как это сделать эффективно? В данный момент я играю с таким кодом:

int windowLevel = CGShieldingWindowLevel();
NSRect windowRect = [[NSScreen mainScreen] frame];
NSWindow *overlayWindow = [[NSWindow alloc] initWithContentRect:windowRect
                                          styleMask:NSBorderlessWindowMask
                                            backing:NSBackingStoreBuffered
                                              defer:NO
                                             screen:[NSScreen mainScreen]];

[overlayWindow setReleasedWhenClosed:YES];
[overlayWindow setLevel:windowLevel];
[overlayWindow setBackgroundColor:[NSColor colorWithCalibratedRed:0.0
                                                          green:0.0
                                                           blue:0.0
                                                          alpha:0.5]];
[overlayWindow setAlphaValue:1.0];
[overlayWindow setOpaque:NO];
[overlayWindow setIgnoresMouseEvents:NO];
[overlayWindow makeKeyAndOrderFront:nil];

… и он работает нормально, но у меня нет возможности запускать какие-либо анимации, такие как медленное увеличение прозрачности (медленное затемнение экрана) и т. Д.

Хотя я не понимаю, как поместить это окно в фоновый режим, не отпуская его и позволяя время от времени всплывать.

Так есть лучший или «стандартный» способ сделать это?

10
задан Peter Hosey 26 November 2011 в 07:59
поделиться