0

NSTextView 内に NSVisualEffectView を追加したいのですが、追加すると、テキストが NSVisualEffectView の下にあるので、テキストの下に NSVisualEffectView を追加するにはどうすればよいですか?

OS X の私のコード:

class myTextView: NSTextView {

    override func awakeFromNib() {
        let visualEffectView = NSVisualEffectView(frame: NSMakeRect(20, 20, 30, 18))
        visualEffectView.material = NSVisualEffectMaterial.Dark
        visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow
        self.addSubview(visualEffectView)
    }
}
4

2 に答える 2

0

多分これはあなたを助けるでしょう:

class MyTextView: NSTextView {

    lazy var visualEffectView: NSVisualEffectView = {
        let visualEffectView = NSVisualEffectView()
        visualEffectView.material = NSVisualEffectMaterial.Dark
        visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow

        return visualEffectView
    }()

    override func awakeFromNib() {
        super.awakeFromNib()

        self.drawsBackground = false
    }

    override func viewDidMoveToSuperview() {
        super.viewDidMoveToSuperview()

        if let containerView = self.superview?.superview?.superview {
            containerView.addSubview(self.visualEffectView, positioned: .Below, relativeTo: self)
        }
    }

    override func resizeSubviewsWithOldSize(oldSize: NSSize) {
        super.resizeSubviewsWithOldSize(oldSize)

        if let superview = self.superview?.superview {
            self.visualEffectView.frame = superview.frame
        }
    }

}

スクロール ビューとクリップ ビューのテキスト ビューなので、そのスーパービューを取得する必要があります。

于 2015-08-16T01:19:42.150 に答える
0
self.sendSubviewToBack(visualEffectView)

ただし、視覚効果はテキスト ビュー自体ではなく、親コンテナーに適用する必要があるため、コードを正しく理解している場合は、この全体を親ビューに移動する必要があります。

于 2015-08-16T01:00:40.303 に答える