objective-c - 在坐标处绘制窗口或在 NSStatus 项之外绘制

标签 objective-c cocoa macos

我正在尝试显示 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/

相关文章:

objective-c - NSTextField + NSTimer

objective-c - 在 Swift 中声明具有泛型类型的变量

iphone - 如何在UIImagepickercontroller中获取URL图像

ajax - 在 WebView 中检索来自 AJAX Web 的提交

c# - 有什么方法可以在 OS X 上开发 Silverlight 应用程序吗?

git - macOS Git 客户端可以使用存储在用户钥匙串(keychain)中的证书吗?

ios - 如何检查 CGContext 是否包含点?

cocoa - 如果不需要使其失效,是否有任何理由保留预定的 NSTimer?

objective-c - LaunchAgent - 有类似 RunAtScreenSaver 的东西吗?

ios - 获取请求返回旧数据