我试图找出如何使用底部圆角掩盖NSTableView - 但仅限于底部。
在此图片中,未应用任何效果:
在这些图片中,您可以看到圆角,我已将此代码用于角落:
self.scrollView.wantsLayer = TRUE;
self.scrollView.layer.cornerRadius = 6;
我无法弄清楚如何摆脱左上角和右上角的圆角:
我尝试了几种不同的选择但无济于事:
//creating a path
//this is a category from github.com/iccir/XUIKit
NSBezierPath * path = [NSBezierPath bezierPathWithRoundedRect:self.tableView.bounds byRoundingCorners:XUIRectCornerBottomLeft|XUIRectCornerBottomRight cornerRadii:CGSizeMake(6, 6)];
CAShapeLayer * layer = [CAShapeLayer layer];
layer.fillColor = [[NSColor blackColor] CGColor];
layer.path = [path CGPath];
//attempt 1
self.scrollView.contentView.wantsLayer = TRUE;
self.scrollView.contentView.layer.mask = layer;
self.scrollView.contentView.layer.masksToBounds = TRUE;
//attempt 2
((NSView*)self.scrollView.documentView).wantsLayer = TRUE;
((NSView*)self.scrollView.documentView).layer.mask = layer;
((NSView*)self.scrollView.documentView).layer.masksToBounds = TRUE;
//attempt 3
self.scrollView.wantsLayer = TRUE;
self.scrollView.layer.mask = layer;
self.scrollView.layer.masksToBounds = TRUE;
最终发生的事情就是一切都消失了:
任何人都知道如何正确处理这个问题?谢谢!
答案 0 :(得分:3)
//creating a path
//github.com/iccir/XUIKit
NSBezierPath * path = [NSBezierPath bezierPathWithRoundedRect:CGRectMake(0,0,325,80) byRoundingCorners:XUIRectCornerBottomLeft|XUIRectCornerBottomRight cornerRadii:CGSizeMake(6, 6)];
CAShapeLayer * layer = [CAShapeLayer layer];
layer.path = [path CGPath];
self.scrollView.wantsLayer = TRUE;
self.scrollView.layer.mask = layer;
我的问题是我创建的路径最初的.height为0.
另请注意,如果表格视图更改大小,则图层蒙版也必须更改。