Пользовательский NSView с закругленными углами и падающей тенью

Я пытаюсь создать собственный NSView с закругленными углами и падающей тенью. Я создал подкласс NSView и получил следующий метод drawRect: method

- (void)drawRect:(NSRect)dirtyRect
{
    NSRect rect = NSMakeRect([self bounds].origin.x + 3, [self bounds].origin.y + 3, [self bounds].size.width - 6, [self bounds].size.height - 6);

    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:5.0 yRadius:5.0];
    [path addClip];

    NSShadow *shadow = [[[NSShadow alloc] init] autorelease];
    [shadow setShadowColor:[NSColor redColor]];
    [shadow setShadowBlurRadius:2.0f];
    [shadow setShadowOffset:NSMakeSize(0.f, -1.f)];
    [shadow set];

    [[NSColor controlColor] set];
    NSRectFill(rect);

    [super drawRect:dirtyRect];
}

В результате получился NSView, нарисованный со скругленными углами, но без тени (но я вижу оттенки красного цвета вокруг углов при сглаживании). Если я закомментирую NSBezierPath, я получу квадратный NSView с тенью. Я не нашел в документации ничего, что предполагало бы, что NSShadow и NSBezierPath являются взаимоисключающими, поэтому мне явно чего-то не хватает.

Любые идеи приветствуются!

11
задан Lou Howard 28 April 2011 в 22:08
поделиться