MacアプリでNSViewから子Viewをはみだしたい
https://gyazo.com/222fcfb5b0282f327adb0acc2fd463da
やりたいことはこんな↑感じで、 Show ボタンをクリックしたらサブメニュー的に NSTableView を表示することです。 https://gyazo.com/12b2815d14d68a05a8e2963e110c9583
しかし、テーブルビューはボタンとおなじ NavigationBarView の子どもなので、氷山のようにほとんどの部分が隠れてしまっています。
まず、NSView を継承した NavigationBarView クラスを作成します。 code: Swift
import Cocoa
class NoClippingLayer: CALayer {
override var masksToBounds: Bool {
set {
}
get {
return false
}
}
}
class NavigationBarView: NSView {
override var wantsDefaultClipping: Bool {
return false
}
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
// Drawing code here.
}
override func awakeFromNib() {
super.awakeFromNib()
wantsLayer = true
layer = NoClippingLayer()
}
}
はみだすのはうまくいきましたが、NSView の背景色をこの色に設定していたのに、 https://gyazo.com/94e943c18c1a8ed991089fd43995d43d
なぜかこんな色に変わってしまいました(文字が表示されているのは気にしないでください)。CALayer を書きかえたからでしょうか?
https://gyazo.com/2f59b15fababeab04ce2019a8800b166