作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我将 NSScroller 子类化以尝试使其看起来类似于“滚动条”在 iOS 上的外观。我希望它只是一个覆盖层,代表绘制在其下方的当前位置。无论出于何种原因,如果我为滚动条重写 drawRect,我都会得到充满白色的边界。有什么方法可以防止这种情况发生,这样我就可以在我的 NSScroller 子类结束的基础上进行绘制吗?
编辑:用清晰的颜色绘图似乎让我很接近,但它画得“太清楚了”:P 它直接画到桌面,而我只想画到窗口。这张图可能更清楚
有什么想法吗?
最佳答案
NSView 子类从 drawRect 开始进行所有绘制。如果您在子类中重写该方法,则您负责完成所有绘制(无论是通过您自己的方法还是调用 super 的方法。)例如,以下代码仅绘制滚动 nob 并绘制其余部分滚动条的边框透明。
- (void)drawRect:(NSRect)dirtyRect {
// Do some custom drawing...
[[NSColor clearColor] set];
NSRectFill(dirtyRect);
// Call NSScroller's drawKnob method (or your own if you overrode it)
[self drawKnob];
}
这更像是一个概念证明,而不是实际的代码建议(不确定这种最小绘图量对 NSScroller 有什么影响。)NSScroller 还有其他特定的绘图方法,您可以从重写的 drawRect 中重写/调用:方法(苹果文档中的信息:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSScroller_Class/Reference/Reference.html)
关于objective-c - 如何画一个透明的NSScroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4181029/
我是一名优秀的程序员,十分优秀!