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

iMa*_*din 6 xcode objective-c scroller nsscrollview

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

Dav*_*vid 19

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

- (void) drawRect: (NSRect) dirtyRect
{
    [self drawKnob];
}
Run Code Online (Sandbox Code Playgroud)


Ver*_*ous 3

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

在 IB 中,检查是否在“滚动旋钮”(从顶部数第二个)下选择了“默认样式”。

在此输入图像描述


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

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

OS X 10.7 文档对此进行了很好的解释。总而言之,检查 a) 用户是否禁用了覆盖滚动条,b) 是否插入了不受支持的设备,或者 c) 您正在子类化 NSScroller、添加附件视图或忘记覆盖+ (BOOL)isCompatibleWithOverlayScrollers.

如果您不喜欢显示的旧式滚动条并希望支持不受支持的设备(例如,在不淡入/淡出的内容顶部绘制的灰色滚动条),您必须对其进行子类化并NSScroller自定义绘制。Mac 版 Twitter 等应用程序可以执行此操作。

  • 最好确保 a) 用户没有明确设置不使用覆盖滚动条,b) 未连接鼠标,以及 c) 滚动视图没有附件视图 (2认同)