NSTableView圆角,如UITableView Groups

时间:2012-02-18 22:55:38

标签: objective-c cocoa calayer nstableview nsbezierpath

我正在尝试创建一个带圆角的NSTableView(很像iOS的Grouped表格视图样式)。 然而,事实证明这非常困难。

我尝试使用CALayers

// ...
self.wantsLayer = YES;
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 10.0;
// ...

适用于NSView个子类,但不适用于NSTableViewNSScrollView

我还尝试覆盖drawRect:,并使用bezierPaths。

NSBezierPath *rectPath = [NSBezierPath bezierPathWithRect: self.bounds];
[rectPath appendBezierPathWithRoundedRect: self.bounds xRadius: 10 yRadius: 10];
[rectPath addClip];
[super drawRect: rectPath.bounds];

我没有在NSView上测试此方法,但它对NSTableView s不起作用。

我之前在StackOverflow上看过一些“重复”的问题,但是他们无法提供令人满意的解决方案。

Rounded corners on NSTableView有一个“正确”的答案,似乎只是因为提问者改变了他的目标。这个问题让我提示尝试NSBezierPath,但正如我所说,我似乎无法使用该方法。

NSTableView rounded corners建议继承NSScrollView,但这对CALayers同样没有响应。

任何建议都将不胜感激。我想得到的答案不仅仅是为了我自己,而是为了后人。

1 个答案:

答案 0 :(得分:2)

我也面临着制作圆角的同样问题,但没有得到答案。

最后我以另一种方式做到了,我让表格的背景透明,在桌子后面添加了4像素圆角的.png文件的图像(我想显示)观点。

通过这种方式,我展示了带圆角的桌子。 希望这个解决方案适合你。