0
오프셋. NSPanel의 하위 클래스입니다.나는 패널을 표시하려면이 코드를 사용하고
windows
은 창 배열입니다. 창이 없으면 패널이 새 창으로 표시됩니다.
문제
I는 일정보기 패널 표시 및 windows
패널은 시트로서 도시되어 비어 있지이다. 이것이 처음 발생할 때 항상 오프셋이 있습니다. 어떤 방법을 처음 호출의 스크린 샷은 다음과, 두 번째 시간은 (모두 windows
하지 빈과 함께)라고 : 내가 사용하는 경우
이 오류가 멀리 갈 수있다 이 :이 경우 크기가 정확하지만 시트가 더 이상 집중되지 않고 산만 체재에서
[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];
}
:
추가 정보가 필요합니다. 예를 들어, 레이아웃 제약 조건 또는 스프링 및 스트럿을 사용하여 레이아웃을 관리합니까? 그리고 관련된 것들은 무엇입니까? – Monolo
아무튼, 패널 크기를 다시 사용하는보기 크기로 설정하는 것과 같은 문제에 대한 초대장처럼 보입니다. 사용자가 패널의 크기를 조절할 수 있도록 UI가 변경되면 어떻게됩니까? 나는 ivar (또는 그렇게 기울어 진 사람들을위한 속성)에 원하는 뷰 치수를 저장하고 그 값에서 크기를 설정하는 것을 선호합니다. – Monolo
레이아웃 제약이 없습니다. 보기의 크기는 400x426이고 위 코드는 내가 사용하는 코드입니다. 하나의 패널, 5 가지 다른보기가 있습니다. 모두 IBOutlets입니다. 이렇게하면 뷰 중 하나를 표시 할 때마다 새 패널을 만들 필요가 없습니다. 응용 프로그램의 작고 중요하지 않은 부분이므로 완벽하게 작성하지 않아도됩니다. 작동하는 한 행복합니다. – Fatso