2013-08-06 4 views
0

오프셋. NSPanel의 하위 클래스입니다.나는 패널을 표시하려면이 코드를 사용하고

windows은 창 배열입니다. 창이 없으면 패널이 새 창으로 표시됩니다.

문제

I는 일정보기 패널 표시windows 패널은 시트로서 도시되어 비어 있지이다. 이것이 처음 발생할 때 항상 오프셋이 있습니다. 어떤 방법을 처음 호출의 스크린 샷은 다음과, 두 번째 시간은 (모두 windows하지 빈과 함께)라고 : 내가 사용하는 경우

First time

Second time

이 오류가 멀리 갈 수있다 이 :이 경우 크기가 정확하지만 시트가 더 이상 집중되지 않고 산만 체재에서

[panel setStyleMask:NSBorderlessWindowMask]; 

는 (그래서 위의 스크린 샷에있는 파란색 버튼은 항상 흰색이다). 매번 시트를 올바르게 표시하려면 어떻게해야합니까? 다음에 그 일이 처음 생기면 어떻게 될까요? 당신이 볼 수 있듯이, 나는 새로운 콘텐츠로 할당하는 대신 패널의 현재 내용보기에보기를 추가

- (void)displayPanelWithView:(NSView *)view andTitle:(NSString *)title { 
    [panel setTitle:title];  
    if (![defaults floatForKey:@"SS_Interface_Mode"] == 0 || [windows count] < 1) { 
     [panel setContentSize:[view frame].size]; 
     [[panel contentView] addSubview:view]; 
     [panel center]; 
     [panel makeKeyAndOrderFront:nil]; 
    } 
    else { 
     [panel setContentSize:[view frame].size]; 
     [[panel contentView] addSubview:view]; 
     [NSApp beginSheet:panel modalForWindow:[windows objectAtIndex:0] modalDelegate:self didEndSelector:nil contextInfo:NULL]; 
    } 
} 
- (IBAction)endSheet:(id)sender { 
    [NSApp endSheet:panel]; 
    [panel orderOut:nil]; 
    for (NSView *view in [[panel contentView] subviews]) 
     [view removeFromSuperview]; 
} 

:

+0

추가 정보가 필요합니다. 예를 들어, 레이아웃 제약 조건 또는 스프링 및 스트럿을 사용하여 레이아웃을 관리합니까? 그리고 관련된 것들은 무엇입니까? – Monolo

+0

아무튼, 패널 크기를 다시 사용하는보기 크기로 설정하는 것과 같은 문제에 대한 초대장처럼 보입니다. 사용자가 패널의 크기를 조절할 수 있도록 UI가 변경되면 어떻게됩니까? 나는 ivar (또는 그렇게 기울어 진 사람들을위한 속성)에 원하는 뷰 치수를 저장하고 그 값에서 크기를 설정하는 것을 선호합니다. – Monolo

+0

레이아웃 제약이 없습니다. 보기의 크기는 400x426이고 위 코드는 내가 사용하는 코드입니다. 하나의 패널, 5 가지 다른보기가 있습니다. 모두 IBOutlets입니다. 이렇게하면 뷰 중 하나를 표시 할 때마다 새 패널을 만들 필요가 없습니다. 응용 프로그램의 작고 중요하지 않은 부분이므로 완벽하게 작성하지 않아도됩니다. 작동하는 한 행복합니다. – Fatso

답변

0

내가 대신이 코드를 사용하여 문제를 해결하기 위해 관리했습니다 패널의보기입니다.