4

質問を言い換えましょう:

addChildWindow子 NSWindow (を使用してメイン NSWindow に追加) をメイン ウィンドウと同じサイズに保つにはどうすればよいですか?

古い質問:

NSWindowuiWindow と openglWindow の2 つがあります。uiWindow はボーダレスで、最初は openglWindow と同じサイズです。子ウィンドウとして追加します。openglWindow が受けるサイズ変更に uiWindow を追従させたいと思います。そのために、openglWindow のデリゲートをサブスクライブし、windowWillResizeメソッドをリッスンしています。しかし、私は今混乱しています。サイズを変更するために uiWindow で呼び出す関数がわかりません。かなりの数のオプションがあります:

  • setFrame: display: `
  • contentRectForFrameRect

  • frameRectForContentRect

以下は、子ウィンドウの初期化コードです。

NSRect uiWindowRect = [self.openglWindow convertRectToScreen:((NSView*)self.openglWindow.contentView).bounds];
NSWindow* uiWindow = [[NSWindow alloc] initWithContentRect:uiWindowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreNonretained defer:NO];

[self.openglWindow addChildWindow:uiWindow ordered:NSWindowAbove];
4

1 に答える 1

3

私が探していたことを正確に行う方法を見つけました。参照用のコードは次のとおりです。

-(void)windowDidResize:(NSNotification *)notification{
    CGRect frame = CGRectMake(self.openglWindow.frame.origin.x,self.openglWindow.frame.origin.y, ((NSView*)self.openglWindow.contentView).frame.size.width, ((NSView*)self.openglWindow.contentView).frame.size.height);
    [self.window setFrame:frame display:YES];
    [self.window setFrameOrigin:NSMakePoint(self.openglWindow.frame.origin.x,self.openglWindow.frame.origin.y)];
    [self.window viewsNeedDisplay];
}
于 2013-04-04T01:06:23.180 に答える