8

我做了一个光滑的NSScroller子类,但不知道如何让它覆盖在顶部NSScrollView而不是推到documentView一边。

在此处输入图像描述

在这里,您可以看到NSCollectionView我希望将其设为 100% 宽的背景,并让滚动条位于顶部。目前,我必须为滚动条设置白色背景,因为用 a 绘制的clearColor不是透明的,而是黑色的。

我会以错误的方式解决这个问题吗?我在这里遗漏了一些明显的东西吗?如何实现NSScroller位于 a 内容之上的透明跟踪的行为NSScrollView

4

3 回答 3

9

我能够通过tileNSSCROLLVIEW的子类中实现来获得定位

- (void)tile {
    [super tile];
    [[self contentView] setFrame:[self bounds]];
}

事实证明,尝试绘制清晰的颜色是一开始的问题。在滚动子类中,我只是通过覆盖 NSSCROLLER子类完全省略了与滑块轨道有关的任何绘图,DRAWRECT:如下所示:

- (void)drawRect:(NSRect)dirtyRect
{
    [self drawKnob];
}

在此处输入图像描述

于 2011-03-09T22:05:24.770 回答
1

请注意,要使其正常工作,您必须为滚动视图启用图层支持!

也就是说,调用:

[scrollViewInstance setWantsLayer:YES];

或在 Interface Builder 中设置。

如果你不这样做,scrollView 的 contentView 将绘制在滚动条的顶部。另外:您应该知道,您所做的实际上是重叠两个 NSView(NSScrollView 之上的 NSScroller --- 都继承自 NSView。)与 iOS 上的 UIViews 不同,OS X 上的重叠 NSViews 不受任何当前版本的正式支持操作系统(10.6 下)。打开 CALayers 似乎可以让它工作,但它仍然需要牢记。当然,打开图层会严重影响绘图性能。

有关更多详细信息,请参阅此 SO 问题:是否有适当的方法来处理重叠的 NSView 兄弟姐妹?

于 2011-05-26T21:44:45.273 回答
-2

这种颜色是怎么回事:[NSColor colorWithCalibratedRed:0.0 green:0.0 blue:0.0 alpha:0.0] 我认为您必须使用界面生成器修改尺寸。

于 2011-03-09T20:42:15.567 回答