我想創建一個自定義NSView與圓角和陰影。我創建了一個的NSView子類,並具有以下drawRect:方法自定義NSView與圓角和陰影
- (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是互斥的,所以我顯然錯過了一些東西。
任何想法,非常感謝!
我把[路徑填充]放在NSFillRect()的地方,結果是一樣的 – 2011-04-28 20:32:46
只是爲了防止任何人讀這個[路徑填充]爲我繪製一個圓角拐角內drawRect – 2011-08-09 16:31:55