2

私はMacのプログラミングの経験があまりなく、Windowsのバックグラウンドを持っています。

したがって、このコードを使用してNSOpenPanelを表示しますが、ダイアログが表示されたときに画面上の位置とサイズも指定したいと思います。それ、どうやったら出来るの?

NSOpenPanel *openPanel  = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setCanChooseFiles:NO];
NSInteger result    = [openPanel runModalForTypes:nil];

編集


電話することで

[openPanel setFrame:NSMakeRect(0, 0, 500, 500) display:YES];

NSOpenPanelのサイズ(500x500ピクセルになります)を設定できますが、左上隅ではなく、画面の左上隅に表示されるのではなく、画面の中央に配置されます。

4

2 に答える 2

4

NSOpenPanelをサブクラス化しcenter、パネルが画面に配置される前に呼び出されるメソッドをオーバーライドする必要があります。右上隅に配置する方法は次のとおりです。

- (void)center {

    NSRect myFrame = [self frame];
    NSRect screenFrame = [[self screen] visibleFrame];

    myFrame.size.height = round(screenFrame.size.height / 2);
    myFrame.origin.x = screenFrame.origin.x + screenFrame.size.width - myFrame.size.width;
    myFrame.origin.y = screenFrame.origin.y + screenFrame.size.height - myFrame.size.height;

    [self setFrame:myFrame display:YES];
}
于 2011-12-20T20:18:30.013 に答える
1

NSOpenPanelはNSWindowから継承します。試したことはありませんが、通常のNSWindowメソッドを使用してサイズと場所を設定できるはずです。

于 2011-12-20T16:01:53.490 に答える