2013-09-24 91 views
3

我想在屏幕上繪製透明背景,以便一切(例如打開的應用程序仍然可見)。如何在透明的NSView上繪製透明的NSWindow?

在我的自定義NSWindowController的windowDidLoad我有follwing:

[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?

+0

添加 [self.window setIgnoresMouseEvents:NO]; to windowDidLoad我的自定義NSWindowController解決了它 –

回答

0

添加

[self.window setIgnoresMouseEvents:NO]; 

到我的自定義NSWindowController的windowDidLoad解決它