我正在尝试制作一个带有clip角的NSScrollView,类似于Twitter应用程序:



我有一个NSScrollView子类,它添加了以下代码:

- (void)drawRect:(NSRect)dirtyRect {
    NSBezierPath *pcath = [NSBezierPath bezierPathWithRoundedRect:[self bounds] xRadius:kDefaultCornerRadius yRadius:kDefaultCornerRadius];
    [path setClip];

    [super drawRect:dirtyRect];
}


我希望NSScrollView的内容具有圆角,但是它不考虑剪切路径。我怎样才能做到这一点?




更新和澄清
我知道如何制作自定义NSScroller,我知道如何使其透明覆盖。我要问的是如何使NSSCrollView夹角,包括其包含的所有内容。 NSScrollView位于NSView内部,该背景的背景可能会发生变化,这意味着无法选择伪造圆角的视图覆盖。

最佳答案

您可以将蒙版应用于视图的图层:

[myScrollView setWantsLayer: YES];
[myScrollView layer].mask = ...;


掩码是另一个CALayer。因此,在这种情况下,您将创建一个CALayer,将其背景色设置为不透明,设置其边界以匹配滚动视图,并为其指定一个cornerRadius,例如8.0

结果将是滚动视图及其所有内容似乎被掩盖为圆角半径为8px的圆角矩形。

关于cocoa - 如何使NSScrollView遵守剪切路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5268467/

10-10 16:44