현재 OS X의 OpenGL 창에 전체 화면보기를 추가하는 중입니다. OS X의 "전체 화면 모드"를 사용하지 않습니다. 사용자 화면. 애플의 설명서에 따라 (전체 화면 창 사이를 전환,코코아 창 전체 화면 만들기
- (void)toggleFullScreen:(id)sender
{
_fullscreen = !_fullscreen;
if(_fullscreen) {
NSRect screenRect = [[NSScreen mainScreen] frame];
[self setStyleMask:NSBorderlessWindowMask];
[self setFrame:screenRect display:YES];
[self setLevel:NSMainMenuWindowLevel+1];
[self setOpaque:YES];
[self setHidesOnDeactivate:YES];
} else {
NSRect screenRect = [[NSScreen mainScreen] frame];
unsigned int width = (unsigned int)(screenRect.size.width/2.0f);
unsigned int height = (unsigned int)(screenRect.size.height/2.0f);
NSRect frame = NSMakeRect(0, screenRect.size.height-height, width, height);
[self setStyleMask:NSTitledWindowMask | NSResizableWindowMask];
[self setFrame:frame display:YES];
[self setLevel:NSNormalWindowLevel];
[self setOpaque:YES];
[self setHidesOnDeactivate:NO];
}
}
이 대부분 제대로 작동하는 것 같다 :
난 내 자신의 사용자 정의 창 클래스는 NSWindow
에서 파생 된 클래스에서, 나는 toggleFullscreen:
선택을 덮어 쓴이 here)와 절반의 화면 해상도의 창이 있습니다.
두 가지 모드를 전환하면 내 창에 "초점이 맞지 않습니다."라는 문제가 있습니다. 내가 모드를 전환 한 직후 키보드 바로 가기 키를 누르면 OS X 오류 "삐"가납니다. 다시 토글을 사용하려면 먼저 창을 클릭하여 "다시 활성화"해야합니다.
내 함수에 [self makeKeyAndOrderFront:nil];
을 추가하려고 시도했지만 문제가 해결되지 않습니다. 내가 필요한 것은 전환하는 동안 창을 "집중"상태로 유지하는 방법입니다. 이 문제를 제외하고이 방법은 완벽하게 작동하며 내 NSView
을 변경할 필요가 없습니다.
편집
의 관련 확실하지만, 나는 펜촉에서로드, 프로그래밍이 창을 생성하지 아니에요. (사자로) 올바른 현대적인 방법을 것으로 보인다
경계선 윈도우가 아닌 기본적으로 키 당신은'오버라이드 (override) 할 필요가 그래서 -canBecomeKeyWindow' : - (BOOL) canBecomeKeyWindow { \t 반환 YES; } 또한'-setFrame : display : animate :'대신'-setFrame : display'를 사용하면 멋진 애니메이션을 얻을 수 있습니다. –
@ JustinBoo :'canBecomeKeyWindow'를 추가해도 차이가없는 것처럼 보입니다.렌더링에 관해서는, 저는'CVDisplayLink'를 사용하고 있습니다 :-) – Kyle
레코드에 대해서는 관련 정보가있는 좋은 페이지가 있습니다 (http://cocoadev.com/wiki/BorderlessWindow). 훌륭한 솔루션을 제공하는 것 같습니다. 누군가 NSWindowController를 사용하여이 문제를 해결할 수 있다고 말했지만 나에게 도움이되지 못했습니다. – Kyle