mc_*_*rum 5 cocoa nsview nswindow drawrect nswindowcontroller
我想在具有透明背景的屏幕上绘制,以便所有内容(例如打开的应用程序仍然可见)。
在我的自定义 NSWindowController 的 windowDidLoad 中,我有以下内容:
[self.window setOpaque: NO];
[self.window setHasShadow:NO];
[self.window setBackgroundColor:[NSColor clearColor]];
[self.window setStyleMask:NSBorderlessWindowMask];
Run Code Online (Sandbox Code Playgroud)
我的自定义 NSWindow 覆盖 canBecomeKeyWindow
- (BOOL)canBecomeKeyWindow {
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我的视图覆盖了drawRect
- (void)drawRect:(NSRect)rect {
[[NSColor clearColor]set];
NSRectFill(rect);
...
}
Run Code Online (Sandbox Code Playgroud)
问题:尝试在自定义视图内使用鼠标事件进行绘制会导致窗口下方的视图/应用程序接收这些事件。
当我不将 NSWindow styleMask 设置为 NSBorderlessWindowMask 或将自定义视图的背景颜色设置为半透明时,它就可以工作。
[[NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:0.05] set]
Run Code Online (Sandbox Code Playgroud)
如何在完全透明和 NSBorderlessWindowMask 的屏幕上绘图?
添加
[self.window setIgnoresMouseEvents:NO];
Run Code Online (Sandbox Code Playgroud)
我的自定义 NSWindowController 的 windowDidLoad 解决了它
| 归档时间: |
|
| 查看次数: |
1533 次 |
| 最近记录: |