【发布时间】:2011-07-02 12:47:52
【问题描述】:
我正在创建一个带有圆角的NSView 子类。这个视图是一个容器,其他子视图将被添加到其中。我试图让NSView 的圆角也剪裁所有子视图的角,但我无法得到它。
- (void)drawRect:(NSRect)dirtyRect {
NSRect rect = [self bounds];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:self.radius yRadius:self.radius];
[path addClip];
[[NSColor redColor] set];
NSRectFill(dirtyRect);
[super drawRect:dirtyRect];
}
红色只是举例。如果我向矩形添加子视图,则不会剪裁角:
我怎样才能做到这一点?
【问题讨论】:
-
-drawRect 中的剪辑:只影响视图的绘制,与视图整个矩形中仍然存在的子视图无关。绘图不是在子视图上,而是在在子视图之下。杰森的回答是关于实现这一目标的唯一方法。使用图层支持的视图。
标签: cocoa nsview rounded-corners clipping nsbezierpath