2011-01-08 35 views
0

我想显示NSStatusItem一侧的东西。我认为我可以用两种方法做到这一点:在坐标或在NSStatus之外绘制一个窗口项目

显示一个透明窗口,其中包含我需要的图像,位于鼠标光标的坐标处。

OR

使用自定义NSStatusItem并在视图中移动控制/图像向左所以它们实际上关闭的状态项

的问题是,在设置的NSRect帧负(-200, 0,100,50)似乎并不实际工作。那么,我该如何渲染状态项边界之外的东西(想一想CSS溢出属性),或者在特定坐标处渲染一个透明窗口?

回答

1

系统将阻止您在状态项目之外绘图,但使用透明窗口将会起作用。

NSRect rect; //The location of the window 
NSWindow *win = [[NSWindow alloc] initWithContentRect:rect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]; 
[win setOpaque:NO]; 

[win setBackgroundColor:[NSColor clearColor]]; 
//or 
[win setContentView:myView]; 

这里,myView是一个自定义视图,它将成为窗口的背景。为了使窗口透明,您必须设置背景颜色清除或使用自定义内容视图,该视图仅绘制不透明的位置。您可能会想要使用浮动窗口,以便它保持最佳状态。注意不要掩盖重要的事情,因为你的窗口可能会拦截事件的目标。

+0

似乎完美的工作(使其成为一个浮动窗口,并显示makeKeyAndOrderFront),除了一件事。它显示了大约一秒,正是我想要的,然后消失。它只是消失 - 日志中没有任何东西,应用程序仍然运行良好。关于可能发生什么的任何想法?编辑:当我点击窗口中的按钮几秒钟,似乎留下来。它就像它在不活动时消失... –

+0

我不知道。它可能被释放?如果没有,尽量不要让它透明,看看它是否仍然消失。 – ughoavgfhw