剪切NSScrollView上的圆角

时间:2012-01-14 10:04:29

标签: cocoa osx-lion appkit

我有一个简单的自定义无边界NSWindow子类,它有一个圆角矩形。

在这个窗口的内容视图中,我添加了一个NSScrollView。

如何让NSScrollView将其文档视图剪辑为NSWindow的圆角矩形?

我尝试了继承NSScrollView,重写drawRect:并在调用super之前添加剪切路径。我也尝试使用相同的技术对文档视图和剪辑视图进行子类化,但我无法将其剪辑。

顺便说一句,这是在Lion上具有弹性滚动行为。

3 个答案:

答案 0 :(得分:4)

经过多次摆弄后,我发现NSScrollView可以通过简单地给它一个背衬层并设置该层的角半径提供来制作圆角,你也可以与内部NSClipView相同。两者都是必需的,现在有意义,因为它是剪辑视图,它实际上为NSScrollView的文档视图提供了可视窗口。

NSScrollView * scrollView = ...;

// Give the NSScrollView a backing layer and set it's corner radius.
[scrollView setWantsLayer:YES];
[scrollView.layer setCornerRadius:10.0f];

// Give the NSScrollView's internal clip view a backing layer and set it's corner radius.
[scrollView.contentView setWantsLayer:YES];
[scrollView.contentView.layer setCornerRadius:10.0f];

答案 1 :(得分:0)

更好的IMO:

cutoff

答案 2 :(得分:0)

在Swift中,我这样解决:

scrollView.wantsLayer = true
scrollView.contentView.wantsLayer = true
scrollView.layer?.cornerRadius = 20.0
scrollView.contentView.layer?.cornerRadius = 20.0