2011-07-08 76 views
2

我創建了一個無邊框窗口,我想刪除它的陰影。無邊界窗口和可可中的陰影

這是我的初始化窗口代碼:

- (id)initWithContentRect:(NSRect)contentRect 
       styleMask:(NSUInteger)windowStyle 
        backing:(NSBackingStoreType)bufferingType 
        defer:(BOOL)flag 
{ 

    if (![super initWithContentRect: contentRect 
          styleMask: NSBorderlessWindowMask 
          backing: NSBackingStoreBuffered 
           defer: NO]) return nil; 

    [self setHasShadow:NO]; 
    [self setOpaque:NO]; 
    [self setBackgroundColor:[NSColor clearColor]]; 
    [self setAcceptsMouseMovedEvents:YES]; 
    return self; 
} 

正如你可以看到我使用setHasShadow:NO但沒有發生和陰影仍然顯示。

我該如何去除陰影?此外

self = [super initWithContentRect: contentRect 
         styleMask: NSBorderlessWindowMask 
         backing: NSBackingStoreBuffered 
          defer: NO]; 
if(self) 
{ 
    //continue with initialisation 
} 
return self; 

,如果正在從它可能有一個影子在Interface Builder中指定的筆尖加載的窗口:

回答

3

嗯,有一件事你應該分配您的來電super的結果self 。由於在調用init方法之後加載了nib中的設置,它們可能會覆蓋init方法中的設置。

然後,解決方案是確保該窗口沒有在界面生成器中選中的陰影外觀複選框,或者在‑awakeFromNib而不是在初始化程序中調用[self setHasShadow:NO]

‑awakeFromNib始終在加載nib文件並連接所有插座後調用。