在NSScrollView中,滚动条背景不透明

时间:2012-06-28 22:45:07

标签: objective-c xcode nsscrollview scroller

Scroller http://f.cl.ly/items/1b1v2D2X1D092k2R1C0i/Scrollbar.png

嗨!我正在使用NSScrollView,它具有基于视图的NSTableView。每当表格添加一个表格单元格时,滚动条就会显示,直到您看到滚动条没有透明背景为止。由于某种原因,它的背景是白色的,你可以在图像上看到。

我使用IB来设置NSScrollView和NSTableView,我找不到任何可以禁用滚动条背景的选项。可能导致这种情况的任何想法?

更新:Xcode中我的NSScrollView的设置

Xcode http://f.cl.ly/items/2R0k1x0T1X0A160E3l2i/Screen%20Shot%202012-06-29%20at%2002.06.32.png

4 个答案:

答案 0 :(得分:18)

覆盖NSScroller并执行以下操作。这将为您提供透明的背景。

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

答案 1 :(得分:2)

我唯一的建议是确保您的NSScrollers属于默认样式,或者如果您使用的是自定义卷轴,则设置为覆盖+ (BOOL)isCompatibleWithOverlayScrollers的类。

在IB中,检查“Scroller Knobs”下的“Default Style”,从顶部开始。

enter image description here


OS X Lion引入了新的NSScrollers(叠加滚动条),与Snow Leopard中和SL(传统滚动条)之前的版本形成鲜明对比。叠加滚动条是淡入/淡出的类型,并且在内容之上绘制而没有明显的白色背景。

在某些情况下,Lion决定使用旧版滚动条而不是新的叠加滚动条(因为,例如,如果没有插入滚轮的指针设备,则无法精确滚动隐藏的叠加滚动条)

The OS X 10.7 documentation解释得很清楚。总而言之,检查a)用户是否禁用了覆盖滚动条,b)是否插入了不支持的设备,或者c)您是否继承NSScroller,添加附件视图或忘记覆盖+ (BOOL)isCompatibleWithOverlayScrollers

如果您不喜欢显示的旧版滚动条并希望支持不受支持的设备(例如,在内容之上绘制的灰色滚动条不会淡入/淡出),则必须将NSScroller子类化并绘制为自定义-ly。像Twitter for Mac这样的应用就是这样做的。

答案 2 :(得分:1)

对我来说,在我的视图控制器中,我将滚动条样式设置为:

[_scrollView setScrollerStyle:NSScrollerStyleOverlay]; 

这使得滚动条具有透明背景。

答案 3 :(得分:-2)

如果你想在NSScrollView中实现透明度,或者只是想要一个清晰的滚动视图背景......只需使用NSScrollView的setDrawsBackground属性,即:

[scrollView setDrawsBackground:NO];

希望这有助于某人。谢谢:))

相关问题