カスタムウィンドウツールバーを作成したいのですが、実際のNSToolbarを使用せずに(必要に応じて正しく動作せず、希望どおりにスタイルを設定できないため)、サブビューをに追加する必要があります。ウィンドウのタイトルバー。次のようになります。
考えられる方法は次のとおりです。
[[[_window contentView] superview] addSubview:_titlebarView];
しかし、これには問題があり、ヨセミテに警告が表示されます(NSWindow warning: adding an unknown subview: <NSView: 0x608000122b20>
)したがって、これは正しい方法ではないようです。
現在、ツールバービューをタイトルバービューに追加しています。
[[[_window standardWindowButton:NSWindowCloseButton]
superview] addSubview:_titlebarView];
しかし、これも間違っていると感じます。
私のアプリはOSX 10.10(Yosemite)のみを対象としているため、YosemiteのみのAPIを使用しても問題ありません。そこで、NSTitlebarAccessoryViewController
を調べて、サブクラス化してNSWindow
's addTitlebarAccessoryViewController:
方法。このアプローチでは、1つの問題が残っています。layoutAttribute
の可能な値は次のとおりです。
NSLayoutAttributeBottom
NSLayoutAttributeRight
NSLayoutAttributeBottom
は、ウィンドウのタイトルバーの上部に配置し(上のスクリーンショットを参照)、信号を中央に配置する必要があるため、私には適していません。 NSLayoutAttributeRight
はまさに私が必要としているものですが、タイトルバーの高さを上げる方法が見つからないため、ビューがタイトルバーの高さにクリップされ、役に立たなくなります。 (注:テクスチャウィンドウを使用してコンテンツの境界線を変更しても、実際のタイトルバーの高さは変更されないため、機能しません)
これを行うための推奨される方法は何ですか?デフォルトのタイトルバーよりも大きなビューを表示できる場合は、公式APIを使用してAccessoryViewControllerアプローチを使用することをお勧めします。
それはただのNSToolBarです。ヨセミテでは、window.title.titleVisibility = .Hidden
、NSToolBarがタイトルバーになります
WAYAppStoreWindow あなたが探していることを達成するかもしれません。 Yosemiteでのサブビューの警告を回避し、カスタムウィンドウのタイトルバーの高さを指定し、タイトルバーにサブビューを追加するために明示的に作成されました。
ありがとう@ePirat
TitlebarViewにサブビューを追加することは、
[[[_window standardWindowButton:NSWindowCloseButton] superview] addSubview:_customTitlebarView];
ウィンドウをセルフビューに割り当てます。その後、フレーム付きのサブビューを追加して、必要な機能を提供します