在Mac OS X (Lion)上创建全屏覆盖的最优雅的方式



我正在寻找在Mac OS x下创建全屏覆盖的"最佳"方式。我想创建一个透明或半透明的覆盖,它关心鼠标事件并显示其他输入/输出元素。

这个覆盖应该在所有其他GUI项目的上面(像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];

…,它工作得很好,但我没有选项来启动任何类型的动画,如慢慢增加透明度(慢慢调暗屏幕)等。

虽然我不明白如何把这个窗口放在后台,不释放它,让它时不时地弹出。

那么有没有更好的或"标准"的方法来做呢?

你可以使用NSViewAnimation。是的,它也可以在windows上运行。

动画的目标应该是窗口,它的效果应该是渐入或渐出,这取决于你是显示还是隐藏它。不要使用帧键,因为你可能不想移动或调整窗口的大小。

当然,您应该省略makeKeyAndOrderFront:消息,因为您将使用渐隐效果对其进行排序。

相关内容

最新更新