我有一个简单的自定义无边界NSWindow子类,该子类具有圆角矩形。
在此窗口的内容视图中,我添加了一个NSScrollView。
如何获取NSScrollView来将其文档视图裁剪为NSWindow的圆角矩形?
我已经尝试将NSScrollView子类化,重写drawRect:并在调用super之前添加剪切路径。我还尝试了使用相同技术将文档视图和剪辑视图子类化,但是无法对其进行剪辑。
顺便说一句,这是在Lion上具有灵活的滚动行为。
经过反复摆弄之后,我发现NSScrollView
可以通过简单地为其提供衬里层并设置该层的拐角半径provided来使其具有圆角,您也对其内部[C0 ]。两者都是必需的,这现在很有意义,因为实际上是剪辑视图提供了NSClipView
文档视图的可视窗口。
NSScrollView
甚至更好的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];
在Swift中,我已经这样解决了:
scrollView.wantsLayer = true
scrollView.layer?.masksToBounds = true
scrollView.contentView.wantsLayer = true
scrollView.contentView.layer?.masksToBounds = true