NSWindow Shadow Outline

Jos*_*hua 9 macos cocoa objective-c shadow nswindow

我正在通过为窗口设置自定义内容视图来绘制自定义窗口.当我绘制自定义视图时,我给它圆角和一个漂亮的轮廓来模仿一个合适的窗口.

但是,我看到窗户周围还有另一个1像素的轮廓,它从角落的边缘偏离.我发现,如果我关掉阴影就会消失,但很明显,因为这需要像窗户一样,我需要阴影.这就是我对1px大纲的意思:

在此输入图像描述

我怎么能阻止这个?


编辑

绘制自定义窗口内容视图的代码:

    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:[self bounds] cornerRadius:5];

    NSGradient* aGradient = [[[NSGradient alloc] initWithColorsAndLocations:
                              [NSColor colorWithDeviceRed:0.5569 green:0.5137 blue:0.4588 alpha:1.0000], 0.0,
                              [NSColor colorWithDeviceRed:0.5569 green:0.5137 blue:0.4588 alpha:1.0000], 1.0,
                              nil] autorelease];

    [aGradient drawInBezierPath:path angle:90];

    [path setLineWidth:4];
    [[NSColor colorWithDeviceRed:0.4235 green:0.3922 blue:0.3451 alpha:0.9000] setStroke];
    [path strokeInside];

    [path setLineWidth:3];
    [[NSColor colorWithDeviceRed:0.8431 green:0.8314 blue:0.8078 alpha:1.0000] setStroke];
    [path strokeInside];

    [path setLineWidth:1];
    [[NSColor colorWithDeviceRed:0.4235 green:0.3922 blue:0.3451 alpha:0.9000] setStroke];
    [path strokeInside];
Run Code Online (Sandbox Code Playgroud)

ala*_*air 1

您需要通过发送告诉窗口重新计算其影子-invalidateShadow