小编mc_*_*rum的帖子

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

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

在我的自定义 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 的屏幕上绘图?

cocoa nsview nswindow drawrect nswindowcontroller

5
推荐指数
1
解决办法
1533
查看次数

我如何跳过包含使用libclang?

我使用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)

parsing objective-c libclang

4
推荐指数
1
解决办法
1208
查看次数