2012-04-16 7 views
0

NSViewに合うようにNSWindowのサイズを変更できません。 1つのアクションでは動作しますが、ロジックエラーでなければなりません。NSWindowはNSViewに合わせてサイズ変更されません - 何度か?

私は1つのNSWindowを空にし、3つのNSViewをコンポーネントで、サイズが異なります。

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

このコードは正常に動作します:私はNSViewのに合わせて、それを表示するには、NSWindowのサイズを変更し、次のコードで

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

NSWindowの元に戻ったときに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]; 
} 

ありがとうございました。

EDIT:VIEW.frame.sizeを取得すると、これが繰り返し使用されると、その値は失われますか?これは私にとっては非常に奇妙な行動ですね?

答えて

3

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

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

+0

返信いただきありがとうございますが、何を意味するのか理解できません。 _mainView、_additionViewなどをNSViewsとして設定しました。新しいディスポーザブルNSViewを作成するにはどうすればいいですか?もう一度お返事します – Cristian

+0

'NSView * view = [[NSView alloc] initWithSize:someSize]; ' –

+0

答えを正しく理解すれば、デフォルトのサイズの新しいNSViewを作成してから、ビューを必要なビューに変更してから変更しますサイズ? – Cristian

関連する問題