0

NSView に合わせて NSWindow のサイズを変更するのに問題があります。機能するため、論理エラーである必要がありますが、1 つのアクションではありません。

空の NSWindow が 1 つと、コンポーネントがあり、サイズが異なる 3 つの NSView があります。

次のコードでは、NSView に合わせて NSWindow のサイズを変更して表示します。

[_window setContentSize:_mainView.frame.size];
[_window setContentView:_mainView];

このコードは正常に動作します。

ただし、1 つの NSView には [戻る] ボタンがあり、これにより NSWindow に正しい NSView が表示されますが、サイズが元に戻りません。例として、最初のウィンドウは特定のサイズです。クリックして別のビューに切り替えると、サイズが正しく変更されます。戻るボタンを押すと、NSView が表示されますが、ウィンドウは同じサイズのままですか?

元の NSView に戻ったときに NSWindow のサイズが変更されない理由を誰かに説明してもらえますか?

よろしくお願いします。これは私が持っている完全なコードです:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [_window setContentSize:_mainView.frame.size];
    [_window setContentView:_mainView];
}

- (IBAction)switchSubtractionView:(id)sender {
    [_window setContentSize:_subtractionView.frame.size];
    [_window setContentView:_subtractionView];
}

- (IBAction)switchAdditionView:(id)sender {
    [_window setContentSize:_additionView.frame.size];
    [_window setContentView:_additionView];
}

// -----------------------------------------------------------------------
// THE FOLLOWING METHOD DISPLAYS THE NEW VIEW CORRECTLY BUT DOESN'T RESIZE
// -----------------------------------------------------------------------
- (IBAction)switchMainMenu:(id)sender {
    [_window setContentSize:_mainView.frame.size];
    [_window setContentView:_mainView];
}

よろしくお願いします。

編集: VIEW.frame.size を取得するときに、これを繰り返し使用すると値が失われるように思えますか? これは私には非常に奇妙な動作に思えますか?

4

1 に答える 1

3

ウィンドウのコンテンツ ビューは常に、ウィンドウのコンテンツ領域を満たすサイズにする必要があります。したがって、ウィンドウのコンテンツ サイズを設定すると、現在のコンテンツ ビューのサイズが効果的に変更されます。これは、コンテンツ ビューを切り替える直前に発生するため、古いビューのサイズを変更しています。

コンテンツ サイズを変更する前に、コンテンツ ビューを新しい使い捨ての NSView に設定してから、新しいコンテンツ ビューを設定してみてください。

于 2012-04-17T12:03:49.140 に答える