在图层支持的视图中收缩NSScrollView的NSScroller

时间:2013-10-07 19:39:36

标签: cocoa webview calayer nsscrollview nsscroller

我遇到了一个奇怪的问题(Bug?):说我有WebView,它会垂直滚动。

我现在想缩小mainFrame的垂直卷轴,使其高度小于NSScrollView本身。

enter image description here

原因是我想在网页视图上方固定两个视图(在顶部和底部边缘)。

我通过改变verticalScroller的框架(改变原点和高度)轻松地在frameLoad委托方法中做到了这一点。

有效,但是:

然而,一旦我将webView和它的父NSView设置为图层支持,它就会停止工作,滚动条会将自身重置为默认位置和高度。

现在我不知道这是不是一个bug。 有没有其他方法可以尝试“插入”卷轴?

1 个答案:

答案 0 :(得分:2)

您是否尝试过子类化NSScroller,将其设置为NSScrollView的垂直滚动条并覆盖

-(void) setFrameOrigin:(NSPoint)origin;
-(void) setFrameSize:(NSSize)size;

我假设使NSView层支持导致再次设置frameSize(NSScrollView似乎对此有相当多的控制权,因为当你创建一个自定义滚动条时,没有" clean"方式到将NSScroller设置为水平或垂直,而不是调用 - initWithFrame :with

  1. 身高>宽度自动将其设置为垂直
  2. 宽度>高度自动将其设置为水平
  3. 我的另一个建议是,如果您希望NSScroller不能完全反映其父NSScrollView的大小,那么最好将NSView作为webview的内容视图。 NSView有3个子视图。顶部和底部的两个视图固定,中间有一个NSScrollView。在这种情况下,不需要自定义NSScroller。