0

我编写了一个自定义 UI,如下所示:http ://www.youtube.com/watch?v=XLsrVVhEs94

目前它只在 NSView 本身内工作,但我希望它出现在我屏幕的每个角落。

所以我像这样以编程方式创建了一个 NSWindow[[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];

这很好用,但有一个问题:每次我打开这个 UI 时,我都能看到刚刚创建的 NSWindow。我可以看到一个具有 NSWindow 大小的阴影,然后它消失了(因为 [NSColor clearColor])。我觉得[NSColor clearColor]适用于刚刚创建的 NSWindow 太慢了。

NSWindow 的设置[window setOpaque:NO]是透明的。

是否有另一种方法可以在我的屏幕上某处显示自定义 UI?

- 蒂莫

4

1 回答 1

2

我认为您想将延迟设置为“是”。参考文档, defer 属性将立即创建窗口,或者将其推迟到它显示在屏幕上。在这种情况下,您可以在屏幕上显示之前设置所有窗口属性、添加子视图等。

NSWindow *myWin = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
... do window setup here ...
[myWin orderFront:self];

此外,如果仍然闪烁,您可以在窗口上调用“显示”,以便它首先将所有子视图绘制到它的缓冲区中(包括您的清除),然后调用 orderFront。

于 2013-05-04T03:23:52.077 回答