我正在对 NSScroller 进行子类化,以尝试使其看起来类似于 iOS 上的“滚动条”。我希望它只是一个覆盖层,代表在其下方绘制的当前位置。无论出于何种原因,如果我重写滚动条的drawRect,我都会得到用白色填充的边界。有什么方法可以防止这种情况,这样我就可以在我的 NSScroller 子类之上进行绘制?
Edit:
Drawing with clear color seems to bring me close, but it is drawing "too clear" :P It's drawing right to the desktop, when I just want to be drawing down to the window. This picture might make it more clear
有任何想法吗?
NSView 子类从drawRect 开始进行所有的绘制。如果您在子类中重写该方法,则您负责完成所有绘图(无论是通过您自己的方法还是调用超级方法。)例如,以下代码仅绘制滚动旋钮并绘制其余部分滚动条的框架透明。
- (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 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSScroller_Class/Reference/Reference.html)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)