使用NSBorderlessWindowMask时的灰色边框

时间:2010-12-26 15:43:49

标签: cocoa macos

每当我尝试使用NSBorderlessWindowMask创建一个自定义窗口并设置一个NSView(例如一个NSImageView)作为其contentView时,我在NSView周围得到1px灰色边框,我似乎无法摆脱它

我已经采用了几种方法,包括Apple的RoundTransparentWindow示例代码以及StackOverflow上的一些建议。

我怀疑灰色边框来自窗口本身或NSView。

您是否遇到过这个问题,或者您是否有可能的解决方案?

代码相当简单。这是自定义窗口的init方法:

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

    if (self != nil) {
        [self setAlphaValue:1.0];
        [self setBackgroundColor:[NSColor clearColor]];     
        [self setOpaque:NO];
    }

    return self;
}

为了测试这一点,我在IB中将NSImageView放置在该自定义窗口中,没有边框,但NSImageView中的图像有边框。其他NSView子类也是如此,例如NSTextField,NSTableView。

此外,我还注意到Apple的示例应用程序(RoundTransparentWindow)也发生了同样的情况。甚至可以在没有1px边框的自定义窗口中绘制NSView吗?

由于

1 个答案:

答案 0 :(得分:1)

当您使用没有绘图的常规NSView时,您确定会发生这种情况吗?我打赌不是。其他控件(如NSImageView)具有边框。也许你应该仔细检查以确保它们尽可能关闭。

更新 - 如何让您的视图进入您的窗口?您不包含该代码。我创建了一个基本的测试项目(download it here),图像很好,它运行得很好。亲眼看看。