如何使用透明的NSView在透明的NSWindow上绘图?

时间:2013-09-24 12:31:30

标签: cocoa nsview nswindow drawrect nswindowcontroller

我想在屏幕上绘制透明背景,以便所有内容(例如打开的应用程序仍然可见)。

在我的自定义NSWindowController的windowDidLoad中,我有以下内容:

[self.window setOpaque: NO];
[self.window setHasShadow:NO];
[self.window setBackgroundColor:[NSColor clearColor]];
[self.window setStyleMask:NSBorderlessWindowMask]; 

我的自定义NSWindow覆盖canBecomeKeyWindow

- (BOOL)canBecomeKeyWindow {
   return YES;
}

我的视图会覆盖drawRect

- (void)drawRect:(NSRect)rect {
  [[NSColor clearColor]set];
  NSRectFill(rect);
  ...
}

问题:尝试使用我的自定义视图中的鼠标事件进行绘制会导致我的窗口下的视图/应用程序接收这些事件。

当我没有将NSWindow styleMask设置为NSBorderlessWindowMask或将自定义视图的背景颜色设置为半透明时,它就可以正常工作。

[[NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:0.05] set]

如何在屏幕上绘制完全透明和NSBorderlessWindowMask?

1 个答案:

答案 0 :(得分:0)

添加

[self.window setIgnoresMouseEvents:NO];

到我的自定义NSWindowController的windowDidLoad解决了它