Создать тень для NSView - Какао - PullRequest
1 голос
/ 22 июля 2011

Я пытаюсь создать тень вокруг NSView, например, как NSWindow делает это со своей тенью, но у меня возникли некоторые трудности.Я создал класс для NSView, для которого я создаю тень, и я использую этот код для переопределяющего метода:

   -(void)drawRect:(NSRect)dirtyRect {
    NSRect rect = NSInsetRect([self bounds], 10.0, 10.0);
    NSShadow *dropShadow = [[[NSShadow alloc] init] autorelease];
    [dropShadow setShadowColor:[NSColor blackColor]];
    [dropShadow setShadowBlurRadius:5];
    [dropShadow setShadowOffset:NSMakeSize(0,-3)];

    [NSGraphicsContext saveGraphicsState];

    [dropShadow set];

    NSRectFill(rect);

    [NSGraphicsContext restoreGraphicsState];

    [super drawRect:dirtyRect];
}

Это на самом деле не создает тень, в которой ясмотря.

Вот тень, к которой я пытаюсь нацелиться ...

NSWindow Shadow

скорее создает линию через NSView, которая выглядит как граница внутриграницы зрения.У кого-нибудь есть идеи для этого?

1 Ответ

2 голосов
/ 05 марта 2013

Я столкнулся с похожими проблемами с тенями, потому что NSView обрезает свои границы.

Я исправил это, когда использовал представление с резервной копией слоя.Я просто установил для свойства wantsLayer суперпредставления значение YES .. т.е. [[view superView] setWantsLayer: YES] и установил тень для просмотра [view setShadow: dropShadow] .

...