Grey border around view when using NSBorderlessWindowMask

有些话、适合烂在心里 提交于 2019-12-11 02:43:37

问题


I'm having the exact same problem as in this question:

Gray border when using NSBorderlessWindowMask

However, the accepted answer (as in the comments) of removing the window shadow doesn't seem to work, at least on Lion.


I've subclassed NSWindow, and created a borderless window in this manner:

-(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;
}

Please note that this app will only be run on Lion (so NSResizableWindowMask doesn't change the appearance). I tried disabling the shadow, and toggling numerous settings for my window but I can't seem to remove this grey border:

Nowhere in my code do I add a border. I simply have a NSSplitView added in Interface Builder in a window. During runtime I add the colored view as a subview to the left pane of the split view, completely filling the bounds of the left split view.

Edit: This happens even using a simple NSView, not even a split view.


TL;DR: Why does my NSView have a grey border around it?


回答1:


ok got it. to remove the shadow simply add this to your NSWindow subclass:

- (BOOL)hasShadow {
    return NO;
}

and to remove the border you need to know that this border is coming from the view - not the window (just like you said it in your edit). So you have to disable the border for the view with this code:

[myview setBorderType:NSNoBorder];


来源:https://stackoverflow.com/questions/9124349/grey-border-around-view-when-using-nsborderlesswindowmask

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!