NSView がビューの自動サイズ変更を行う方法を理解する必要があります。IB ですべてを設定すると、サブビューのサイズが適切に変更されます (マウスでウィンドウのサイズを変更すると)。ただし、[myMainView setFrame:]
新しいフレーム四角形を使用しても何も起こりません。サブビューはすべて元のサイズのままです (メイン ビューのサイズが正しい場合でも)。Child'sresizeWithOldSuperviewSize:
が呼び出されますが、まだ適切なサイズではありません。
画面(画面#1)、ラベル、画像、ビデオにココア要素がいっぱいあります。これらの要素には明確に定義されたレイアウトがあります。非常にうまく機能するInterface Builderを介して自動サイズ変更動作をセットアップしました。メイン ウィンドウのサイズを変更すると、満足のいく方法で要素のサイズが変更されます。
ここで、ユーザーが「次へ」ボタンをクリックすると、2 番目の画面いっぱいの要素 (画面 #2) が描画されます。私のレイアウトは、正規の画面サイズ (800x600 など) に基づいて構築されています。しかし、画面 #1 でサイズが変更されたため、ウィンドウは大きく (または小さく) なっています。そのため、要素は、使用可能なスペースを埋めるために適切にサイズ調整されるのではなく、ウィンドウ内の小さな領域しか占めていません。これらの要素をスケーリングしたい。
自動サイズ変更の仕組みを誤解していますか? NSView の下にある自動サイズ変更機構を手動でトリガーするにはどうすればよいですか?
私ができることは2つあります。
- 元のサイズに対する現在の画面サイズに基づいて、要素のサイズを手動で変更します。このオプションは私のお気に入りではありません。なぜなら、NSView で既に動作しているコードを書き直す必要があるように見えるからです (自動サイズ変更の動作
- 私の 2 番目のオプションは、前述の NSView の自動サイズ変更マジックを呼び出すことです。ドキュメンテーションは、[NSView setFrame:] が私のためにそれを行うことを意味します。私が試したのは、コンテンツ ビューのサイズを元の画面サイズ (800x600) に変更し、要素をレンダリングしてから、現在のウィンドウ サイズにサイズ変更することでした。概念的には、手動でウィンドウのサイズを変更するのと同じではありませんか? そうではないようです。繰り返しますが、このオプションは、記述して維持する必要のあるコードの量を最小限に抑えるため、推奨されます。