Bar*_*ttJ 5 cocoa objective-c nsview nsscroller
我正在对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];
}
Run Code Online (Sandbox Code Playgroud)
这更像是一个概念证明,而不是实际的代码建议(不确定在NSScroller上执行这个最小数量的绘图有什么影响.)NSScroller还有其他特定的绘图方法,你可以覆盖/调用来自重写的drawRect:method(info可从apple的文档获得:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSScroller_Class/Reference/Reference.html)
如果除了绘制旋钮之外的所有内容都保留下来,您可以获得一个无背景的滚动条......
- (void) drawRect: (NSRect) dirtyRect
{
[self drawKnob];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4766 次 |
最近记录: |