如何在NSScrollView中使Scroller背景透明?

时间:2018-06-27 11:32:29

标签: swift macos nsscrollview nsscroller

我已经使用Storyboard设置了NSScrollView,但找不到可以禁用滚动条背景的任何选项。关于如何实现这一目标的任何想法?

NSScroller Background Color

3 个答案:

答案 0 :(得分:1)

其基本概念是将NSScroller子类化,然后进行相应的更改。

我有相同的要求,所以我将其子类化并进行了如下所示的更改。 借助在线工具转换了目标C代码,因此对错误表示歉意 看看吧。

这可能有帮助。

//  Converted to Swift 4 by Swiftify v4.1.6766 - https://objectivec2swift.com/
//  GridScroller.h
//  Created by Vikram on 08/09/16.

import Cocoa

class OpaqGridScroller: NSScroller {
    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)
        NSColor.clear.setFill()
        dirtyRect.fill()
        // whatever style you want here for knob if you want
        knobStyle = .dark
    }
}

答案 1 :(得分:0)

您可以尝试覆盖绘制滚动器矩形

override func draw(_ dirtyRect: NSRect) {
    NSDrawWindowBackground(bounds);
    self.drawKnob()
}

您始终可以通过设置自定义矩形颜色来进行绘制

override func draw(_ dirtyRect: NSRect) {
    NSColor.clear.set()
    __NSRectFill(dirtyRect)

    self.drawKnob()
}

答案 2 :(得分:0)

此解决方案对我有用。

class OpaqueGridScroller: NSScroller {
    override func draw(_ dirtyRect: NSRect) {
        // NSColor.clear.set()
        // dirtyRect.fill()
        self.drawKnob()
    }
}