【发布时间】:2012-12-13 04:13:40
【问题描述】:
我正在尝试自定义我的应用程序的 UI,并且我希望我的 NSTableView 具有圆角。所以我继承了 NSTableView 并得到了这个:
但是,当我填充表格并选择一行时,选择会绘制在边框上,如下所示:
我尝试在表格视图绘图代码中添加剪辑,但它不起作用。有关如何解决此问题的任何建议?
编辑:
我在 NSTableView 中的绘图代码如下:
- (void)drawRect:(NSRect)dirtyRect {
[NSGraphicsContext saveGraphicsState];
NSRect frame = NSMakeRect(0.0, 0.0, [self bounds].size.width, [self bounds].size.height-1.0);
[[NSBezierPath bezierPathWithRoundedRect:frame xRadius:3.6 yRadius:3.6] addClip];
[super drawRect:dirtyRect];
[NSGraphicsContext restoreGraphicsState];
}
实际的圆角框是在 NSScrollView 的 drawRect 方法中绘制的。有趣的是,这确实剪辑了第一行和最后一行的选择:
但不是在表格滚动时:
所以问题仍然存在:如何将所有绘图剪辑到 NSScrollView 的圆角框架内?
【问题讨论】:
-
你会发布你的剪辑代码吗?
-
您是否覆盖了
drawRect和initWithRect? -
@FireLizzard 我会在 initWithRect 方法中添加什么?我在上面的 NSTableView 中发布了我的 drawRect 方法。框架的实际绘制发生在 NSScrollView 的 drawRect 方法中。
-
我对 NSView 的子类化了解不多。您可能不必覆盖
initWithRect,我只是把它放在那里作为一种可能性。我想知道您的问题是否与您在剪辑后致电[super drawRect:]的事实有关。只是想法。
标签: macos cocoa nstableview rounded-corners