1

我有一个类似于NSBox绘制圆角框背景的自定义视图子类。问题是,如果我在盒子视图中放置一个类似的NSTableView视图,它不会剪辑到圆角。有什么办法可以圆角NSTableView及其父滚动视图?

4

1 回答 1

2

我没有用表格视图尝试过这个,但有其他控件。

在 NSTableView 的子类中(或您要剪辑的任何视图/控件)

  1. 覆盖drawRect:
  2. 使用您想要的形状创建一个 NSBezierPath(可能appendBezierPathWithRoundedRect:xRadius:yRadius:只记得使用视图的边界作为大小)
  3. 向路径发送addClip消息以将该形状添加到视图的剪切路径
  4. 打电话给超人drawRect:

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

如果您查看 Apple 的 Welcome to Xcode 窗口,他们会通过在顶部绘制一个自定义标题并在底部绘制一个文本块来摆脱它,这样他们就不必围绕 table view 本身。如果你能做这样的事情,我会的。

于 2010-12-12T01:49:35.887 回答