2012-04-16 4 views
0

NSView에 맞게 NSWindow의 크기를 조정하는 데 문제가 있습니다. 그것은 작동하지만 하나의 행동에 대한 논리 오류 여야합니다.NSView가 NSView에 맞게 크기가 조정되지 않습니다 - 가끔?

하나의 NSWindow는 비어 있고 3 개의 NSView는 구성 요소와 크기가 다릅니다. 다음 코드와

나는 NSWindow 표시는 NSView의 맞하고 표시 크기를 조정 :

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

이 코드는 잘 작동합니다.

그러나 하나의 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를 가져올 때 이것이 반복적으로 사용되면 값이 손실됩니다. 이것은 나에게 매우 이상한 행동으로 보입니까?

답변

3

창의 내용보기는 항상 창의 내용 영역을 채울 수있는 크기 여야합니다. 따라서 창의 내용 크기를 설정하면 효과적으로 현재 내용보기의 크기를 변경할 수 있습니다. 이는 내용보기를 전환하기 직전에 발생하므로 이전보기의 크기가 변경됩니다.

내용 크기를 변경 한 다음 새 내용보기를 설정하기 전에 내용보기를 새로운 일회용 NSView로 설정해보십시오.

+0

답장을 보내 주셔서 감사합니다.하지만 무슨 뜻인지 이해하는 데 어려움이 있습니다. _mainView, _additionView 등을 NSViews로 설정했는데 어떻게 새로운 일회용 NSView를 만들 수 있습니까? 다시 감사합니다 – Cristian

+0

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

+0

정확하게 대답을 이해하면 기본 크기로 새 NSView를 만든 다음 원하는보기로보기를 변경 한 다음 변경합니다. 크기? – Cristian

관련 문제