NSWindows の動的なサイズ変更に関する質問に対する多くの回答を読みましたが、まだ何も機能していません。
メニューバーから表示される「ポップオーバー」のようなウィンドウを作成しましたが、デザインの点で十分にカスタマイズできないため、NSPopover を使用できませんでした。現在のビュー階層は次のようになります。
NSWindow Subclass
- NSView (clears the titlebar rendering, draws popover arrow)
- NSView (contentView)
- NSOutlineView (main table of content)
- NSView (window footer)
私が必要としているのは、ウィンドウが NSOutlineView の拡大および縮小の項目で拡大および縮小することです。これにより、ウィンドウは常に、アウトライン ビュー、フッター、および上部のポップオーバー矢印に対して正確な高さになります。
コンテンツに基づいてアウトライン ビューに必要な高さを計算する方法があります。これまでのところ、コンテンツ ビュー コントローラーで が呼び出されたときにサイズを再計算しようとしてから、デリゲート メソッドとでawakeFromNib
再度サイズを再計算しようとしましたが、ウィンドウのサイズを正しく変更することはできません。outlineViewItemDidCollapse:
outlineViewItemDidExpand:
私は多くの異なる方法を試しましたが、どれもうまくいきませんでした。これを行う「標準的な」方法はありますか?この種の問題に関連して人々が話しているのを見てきまし-[NSWindow frameForContentRect:]
たが、それがどのように必要なのかがよくわかりません。
たぶん、私はこれを完全に間違った方法で行っているのかもしれませんが、そうでないことを願っています. これは可能であるように思われます。適切なものを適切な場所に配置するだけです。残念ながら、GUI プログラミングは私の得意分野ではありません。人々が持っているアイデアや解決策をいただければ幸いです。
ありがとう。
編集:これは、一部はマークされた回答が原因で、一部は他のいくつかの理由で解決されました。クリアする NSView には自動サイズ変更マスクがなかったので、これを全方向に拡張するように設定しました。これにより、サイズ変更の問題がいくつか解決しました。また、必要な高さを計算するために使用していた方法は完全に正しくなく、いくつかの問題がありました.
提供された回答では、必要な高さを見つける方法は状況によっては適切ですが、測定できる「ルート」アイテムがありませんでした。これは、考慮に入れる必要があるかもしれないものです。