2010-12-11 71 views
1

我有一个类似于NSBox的自定义视图子类,它绘制了一个圆角框背景。问题是,如果我在框视图中放置一个像NSTableView的视图,它不会剪裁到圆角。有没有办法绕过NSTableView及其父滚动视图的角落?NSTableView上的圆角

回答

2

我还没有试过这个表视图,但与其他控件。

在NSTableView的子类(或任何视图/控制你想夹)

  1. 覆盖drawRect:
  2. 你想要的(可能appendBezierPathWithRoundedRect:xRadius:yRadius:只记得要使用的视图的边界的形状创建NSBezierPath大小)
  3. 发送路径addClip消息给形状添加到视图的剪切路径
  4. 调用超类的drawRect:

如果表视图有一个标题,你可能需要通过继承NSTableHeaderView的子类来剪辑顶角。如果你有滚动条,你可能必须对它们做同样的事情,除了只剪辑某些角落。希望你没有滚动条,因为我怀疑这看起来不错。基本上你想剪辑绘制该部分的视图/控件,剪切父视图不会导致子视图被剪切。

如果你看看Apple的Xcode欢迎窗口,他们可以通过在顶部绘制一个自定义标题和在底部绘制一个文本块来避开它,因此它们不必绕过表格视图本身。如果你能做到这样的事情,我会的。

+1

谢谢,我最终重新思考我的设计,以便我不必这样做。 – indragie 2011-01-08 02:06:38

+0

@indragie你最终做了什么? – 2012-08-15 23:37:17