灰色边框采用NSBorderlessWindowMask

问题描述:

我有完全相同的问题,在这个问题时:去除窗口的阴影没有按”的灰色边框采用NSBorderlessWindowMask

Gray border when using NSBorderlessWindowMask

然而,公认的答案(如评论)似乎工作,至少在狮子。


我子类NSWindow,并以这种方式创造了一个无边界的窗口:

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

    self = [super initWithContentRect:contentRect 
          styleMask:(NSBorderlessWindowMask | NSResizableWindowMask) 
           backing:bufferingType 
           defer:flag]; 

    [self setMovableByWindowBackground:YES]; 
    [self setOpaque:NO]; 
    [self setBackgroundColor:[NSColor clearColor]]; 
    [self setHasShadow:YES]; 

    [self setLevel:NSMainMenuWindowLevel]; 
    return self; 
} 

请注意,这个应用程序将只在Lion上运行(这样NSResizableWindowMask不改变外观) 。我试图禁用的影子,和我的窗口切换许多设置,但我似乎无法删除此灰色边框:

enter image description here

无处在我的代码,我添加边框。我只是在窗口中添加了Interface Builder中的NSSplitView。在运行期间,我将彩色视图作为子视图添加到分割视图的左侧窗格中,完全填充左侧分割视图的边界。

编辑:即使使用简单的NSView甚至不是分割视图也会发生这种情况。


TL;DR:为什么我的NSView周围有灰色边框?

没问题。去除阴影简单地添加到您的NSWindow子类:

- (BOOL)hasShadow { 
    return NO; 
} 

,并删除您需要知道这条边界从视图来的边界 - 而不是窗口(就像你在你的编辑说) 。所以你必须禁用该代码的视图边框:

[myview setBorderType:NSNoBorder]; 
+0

辉煌。谢谢!实际上去除阴影不是问题,但我试图看看它是否影响了小边界的事情。干杯! – 2012-06-05 04:10:15

+1

@ sudorm-rf'myview'是什么类? – NSAddict 2014-01-18 21:45:09