1

があり、NSWindow実装しwindowWillResizeました。

このメソッドには、ウィンドウのコンテンツのサイズを変更するコードがいくつかあります。それはうまくいきます。

しかし、ユーザーが緑色のプラス ボタン (タイトル バーにある) でウィンドウを最大化 (ズーム) したい場合、ウィンドウは大きくなりますが、windowWillResize呼び出されません。

メソッドを実装してみましたwindowShouldZoom。メソッドが呼び出されましたが、現時点ではウィンドウ サイズを取得できません。

ご協力いただきありがとうございます!

4

1 に答える 1

0

のような通知windowWillResize:toSize:は、ウィンドウを制約するためのものです。たとえば、ウィンドウを特定の境界に合わせたい画像ビューアなどです。通知をまったく呼び出さずにフレームが変更される可能性があるため (setFrame:display:たとえば、)、そのようなコールバックに依存してレイアウトを行うのは適切ではありません。

NSView配置したいビューの親であるサブクラスを作成resizeSubviewsWithOldSize:し、ビューレベルなどでメソッドを実装することを検討してください。これには、レイアウト ロジックをサブツリーに含めておくことができるという利点もあります。ある日、ウィンドウ全体を使用するためにビューが必ずしも必要ではないと判断した場合 (たとえば、サイドバーのユーザー制御による表示/非表示)、この方法で「メイン」ウィンドウ領域は、レイアウトを行うために与えられたスペースを魔法のように使用できます。

NSViewサイズ変更の基準として を使用しても、ウィンドウの状態が利用できないわけではないことに注意してください。たとえば、ビューは、ウィンドウが「ライブ サイズ変更」を開始または終了したかどうかを検出し、それに応じてレイアウトを最適化できます。

于 2012-06-29T02:39:34.123 に答える