剪切NSScrollView上的圆角

问题描述 投票:5回答:3

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

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

如何获取NSScrollView来将其文档视图裁剪为NSWindow的圆角矩形?

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

顺便说一句,这是在Lion上具有灵活的滚动行为。

cocoa osx-lion appkit
3个回答
4
投票

经过反复摆弄之后,我发现NSScrollView可以通过简单地为其提供衬里层并设置该层的拐角半径provided来使其具有圆角,您也对其内部[C0 ]。两者都是必需的,这现在很有意义,因为实际上是剪辑视图提供了NSClipView文档视图的可视窗口。

NSScrollView

0
投票

甚至更好的IMO:

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];

0
投票

在Swift中,我已经这样解决了:

scrollView.wantsLayer = true
scrollView.layer?.masksToBounds = true
scrollView.contentView.wantsLayer = true
scrollView.contentView.layer?.masksToBounds = true
© www.soinside.com 2019 - 2024. All rights reserved.