Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 滚动条背景在NSScrollView中不透明_Objective C_Xcode_Nsscrollview_Scroller - Fatal编程技术网

Objective c 滚动条背景在NSScrollView中不透明

Objective c 滚动条背景在NSScrollView中不透明,objective-c,xcode,nsscrollview,scroller,Objective C,Xcode,Nsscrollview,Scroller,嗨!我使用的是NSScrollView,它具有基于视图的NSTableView。每当表格添加一个表格单元格时,滚动条就会出现,这很好,直到您看到滚动条没有透明的背景。由于某种原因,它的背景是白色的,你可以在图片上看到 我使用IB设置NSScrollView和NSTableView,但我找不到任何可以禁用滚动程序背景的选项。你知道这是什么原因吗 更新:Xcode中my NSScrollView的设置 我唯一的建议是,如果您使用自定义滚动条,请确保您的nscroller为默认样式,或者设置为覆盖+(

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

我使用IB设置NSScrollView和NSTableView,但我找不到任何可以禁用滚动程序背景的选项。你知道这是什么原因吗

更新:Xcode中my NSScrollView的设置


我唯一的建议是,如果您使用自定义滚动条,请确保您的
nscroller
为默认样式,或者设置为覆盖
+(BOOL)与覆盖滚动条兼容的类

在IB中,检查“滚动条旋钮”下的“默认样式”是否选中,从顶部算起第二个


OS X Lion推出了新的
NSScrollers
(覆盖滚动器),与Snow Leopard和SL(旧滚动器)之前的版本形成对比。覆盖滚动条是淡入/淡出的类型,在内容顶部绘制,没有耀眼的白色背景

- (void) drawRect: (NSRect) dirtyRect
{
    [self drawKnob];
}
在某些情况下,Lion决定使用传统的滚动条而不是新的覆盖滚动条(因为,例如,如果插入了不带滚轮的指针设备,它就不能准确地滚动隐藏的覆盖滚动条)

解释得很好。总之,检查a)用户是否禁用了overlay Scroller,b)是否插入了不受支持的设备,或者c)您正在对NSScroller进行子类化,添加附件视图,或者忘记覆盖
+(BOOL)是否与overlay Scroller兼容


如果您不喜欢显示的旧式滚动条,并且希望支持不受支持的设备(例如,在内容顶部绘制的灰色滚动条不会淡入/淡出),则必须对NSScroller进行子类化
NSScroller
,并自定义绘制。像Twitter for Mac这样的应用程序可以做到这一点。

覆盖NSScroller并执行以下操作。这将给你一个透明的背景

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

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

[_scrollView setScrollerStyle:NSScrollerStyleOverlay]; 

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

如果您想在NSScrollView中实现透明,或者只想为scroll view创建清晰的背景…只需使用NSScrollView的
setDrawsBackground
属性,即:

[scrollView setDrawsBackground:NO];

希望这对别人有帮助。谢谢:)

我没有使用自定义滚动条。不幸的是,使用默认样式并没有改变任何东西。我用NSScrollView设置的图像更新了我的帖子。我知道它并不总是这样。你是为雪豹或类似的东西而建吗?确保a)用户没有明确设置不使用覆盖滚动条,b)鼠标没有连接,c)滚动视图没有辅助视图谢谢!我的USB鼠标已连接!我拔下插头,它立刻消失了!当连接鼠标时,我如何防止它看起来如此丑陋?我的应用程序中的一个滚动视图总是遗留的(其他的则不是),并且这些条件都不适用:滚动器和滚动视图根本没有子类,没有附件,只有一个触控板。我要试着用这个,你能扩展一下吗?我见过一些这样的答案。如果没有从某个地方调用它,那么将其复制到我的程序中肯定不会起作用?@Maximilian刚刚将其设置为interface builder中的scrollbar类。非常感谢!无需重写
+(BOOL)IsCompatibleWithOverlyScrollers
方法。NSScrollView的
DruckGround
属性必须设置为false,否则无效。问题在于NSScroller的背景,而不是NSScrollView的背景。您的答案不会改变NSScroller的背景。