ツールバーをウィンドウのタイトルバーとして使う
Cocoa/Swift プログラミング
OS X Yosemite 対応以上のアプリであれば、NSWindow のタイトルバーに NSToolbar を使って自由度の高いタイトルバーを作れます。
NSWindow のタイトルバーで NSToolbar を使う
OS X アプリは 10.10 Yosemite から、タイトルバーに Xcode 6 のような高度な機能を簡単に実装できるようになりました。
NSWindow
にNSToolbar
を追加して、OS X 10.10 から新設されたNSWindow
のtitleVisibilityプロパティ
に.hidden
を設定することで、追加したツールバーをウィンドウのタイトルとして使えます。
NSWindow に NSToolbar を追加する
まず、NSWindow に NSToolbar を追加します。
目的のウィンドウがあるストーリーボードを開いたら、オブジェクトライブラリのToolbar
を、目的のウィンドウにドロップします。
そうすると、ウィンドウにツールバーが登録されます。
標準のツールバーを非表示にする
NSWindow に NSToolbar を設定したら、NSWindow の標準タイトルバーを非表示にします。
この設定は Xcode 6.1.1 の Interface Builder のインスペクタでは設定できないようなので、NSWindowController
から派生させた独自のクラスを作成して実装します。
独自のクラスを作成したら、ツールバーを追加したウィンドウを持つウィンドウコントローラーに、そのクラスを割り当てます。
そうしたら、割り当てたウィンドウコントローラーのwindowDidLoadメソッド メソッドで、次のようにして標準タイトルバーを非表示にするコードを記載します。
class MainWindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
// 標準タイトルバーを非表示にします。
self.window?.titleVisibility = .Hidden
}
}
ツールバーがタイトルバーとして表示される
このようにすることで、標準タイトルバーが非表示になり、その代わりに追加したツールバーがタイトルバーとして表示されるようになります。