我对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像素),但不是它的左上角,它是以屏幕为中心,而不是出现在屏幕的左上角。
答案 0 :(得分: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];
}
答案 1 :(得分:1)
NSOpenPanel继承自NSWindow。我从来没有尝试过,但似乎你应该能够使用正常的NSWindow方法来设置它的大小和位置。