我想在具有透明背景的屏幕上绘制,以便所有内容(例如打开的应用程序仍然可见)。
在我的自定义 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 的屏幕上绘图?
我使用libclang来解析一个客观的c源代码文件.以下代码查找所有Objective-C实例方法声明,但它也在包含中找到声明:
enum CXCursorKind curKind = clang_getCursorKind(cursor);
CXString curKindName = clang_getCursorKindSpelling(curKind);
const char *funcDecl="ObjCInstanceMethodDecl";
if(strcmp(clang_getCString(curKindName),funcDecl)==0{
}
Run Code Online (Sandbox Code Playgroud)
如何跳过包含标题的所有内容?我只对源文件中我自己的Objective-C实例方法声明感兴趣,而不是任何包含.
例如,不应包括以下内容
...
Location: /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:15:9:315
Type:
TypeKind: Invalid
CursorKind: ObjCInstanceMethodDecl
...
Run Code Online (Sandbox Code Playgroud)