【问题标题】:Shrink NSScroller of NSScrollView in layer-backed view在 layer-backed view 中缩小 NSScrollView 的 NSScroller
【发布时间】:2013-10-07 19:39:35
【问题描述】:

我遇到了一个奇怪的问题(错误?):假设我有一个 WebView,它将垂直滚动。

我现在想将mainFrame 的垂直滚动条缩小一点,使其高度小于NSScrollView 本身。

这样做的原因是我想在 webview 上方固定两个视图(顶部和底部边缘)。

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

可以,但是:

但是,一旦我将 webView 及其父 NSView 设置为 layer-backed,它就会停止工作,滚动条会自行重置为默认位置和高度。

现在我不知道这是否是一个错误。 有没有其他方法可以尝试“插入”滚动条?

【问题讨论】:

    标签: cocoa webview calayer nsscrollview nsscroller


    【解决方案1】:

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

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

    我假设让 NSView layer-backed 会导致 frameSize 被再次设置(NSScrollView 似乎对此采取了相当多的控制,因为当您创建自定义滚动条时,没有“干净”的方式将 NSScroller 设置为水平或垂直而不是调用 -initWithFrame: with

    1. height > width 自动设置为 vertical
    2. width > height 自动设置为水平

    我的另一个建议是,如果您希望 NSScroller 不完全反映其父 NSScrollView 的大小,您最好将 NSView 作为 webview 的内容视图。 NSView 有 3 个子视图。顶部和底部有两个视图固定,中间有一个 NSScrollView。在这种情况下不需要自定义 NSScroller。

    【讨论】:

    • 谢谢,lead_the_zeppelin,我最终使用了辅助 NSScroller,它可以观察滚动值的变化并设置值:RMSecondaryScroller。但是,我会测试您的第一种方法是否更可靠!
    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多