2011-08-27 93 views
3

我想製作某種可拖動的表面,該表面存在於鼠標光標下方,但高於桌面上呈現的其他任何東西。我試圖在鼠標背後創建一個「蹤跡」。如何在OS X桌面上製作全屏覆蓋圖?

我該如何在Cocoa和Objective-C中做到這一點?

回答

2

您需要繼承NSWindow以創建無邊界窗口並將其窗口級別設置爲NSScreenSaverWindowLevel - 1

- (id)initWithContentRect:(NSRect)contentRect 
       styleMask:(NSUInteger)aStyle 
        backing:(NSBackingStoreType)bufferingType 
        defer:(BOOL)flag 
{ 
    self=[super initWithContentRect:contentRect 
          styleMask:NSBorderlessWindowMask 
          backing:bufferingType 
           defer:flag]; 

    if(self!=nil) 
    { 
     [self setHasShadow:NO]; 
     [self setOpaque:NO]; 
     [self setBackgroundColor:[NSColor clearColor]]; 
     [self setLevel:NSScreenSaverWindowLevel - 1]; 
    } 
    return self; 
} 
+0

這看起來並不總是在其他窗口的頂部,也不是透明的。這是爲什麼? – blake8086

+0

你是怎麼創造你的窗戶的? –

+1

我試着做你推薦的子類,並從我的AppDelegate實例化它。據我所知,重疊的構造函數從來沒有被調用過。我切換到直接在AppDelegate中創建窗口並在其上設置這些屬性。這工作。 – blake8086