我正在尝试显示 NSStatusItem 旁边的某些内容。我认为我可以通过两种方式做到这一点:
在鼠标光标的坐标处显示一个透明窗口,其中包含我需要的图像。
或者
使用自定义 NSStatusItem 并将 View 中的控件/图像移至左侧,以便它们实际上脱离状态项
问题是,将 NSRect 框架设置为负数 (-200,0,100,50) 似乎实际上不起作用。那么,如何渲染状态项边界之外的内容(例如 CSS 溢出属性)或在特定坐标处渲染透明窗口?
最佳答案
系统将阻止您在状态项之外绘图,但使用透明窗口可以。
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 是一个自定义 View ,它将作为窗口的背景。为了使窗口透明,您必须将背景颜色设置为透明,或者使用仅在不透明的地方绘制的自定义内容 View 。您可能需要使用 float 窗口,使其保持在顶部。请小心不要掩盖重要的内容,因为您的窗口可能会拦截针对其下方内容的事件。
关于objective-c - 在坐标处绘制窗口或在 NSStatus 项之外绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4632748/