我编写了一个自定义用户界面,如下所示:http://www.youtube.com/watch?v=XLsrVVhEs94
目前它只在NSView本身内工作,但我希望它出现在我的屏幕的每个角落。
所以我以编程方式创建了一个类似于[[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered
defer:NO];
这很有效,但有一个问题:每次打开这个UI我都可以看到NSWindow刚刚创建。我可以看到一个具有NSWindow大小的阴影,之后它消失了(因为[NSColor clearColor])。我认为[NSColor clearColor]
适用于刚刚创建的NSWindow。
NSWindow设置为[window setOpaque:NO]
,因此它是透明的。
还有其他方法可以在屏幕上的某个位置显示自定义用户界面吗?
- 蒂莫
答案 0 :(得分:2)
我认为您要将延迟设置为YES。参考documentation,defer属性将立即创建窗口,或者将其推迟到屏幕上显示。在这种情况下,您可以在屏幕上显示之前设置所有窗口属性,添加子视图等。
NSWindow *myWin = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
... do window setup here ...
[myWin orderFront:self];
此外,如果仍然闪烁,你可以在窗口上调用'display',这样它首先将所有子视图绘制到它的缓冲区中(包括你的清除),然后调用orderFront。