显示后调整NSPopover的大小

时间:2013-01-22 01:01:49

标签: xcode cocoa nspopover

我有一个NSPopover,他在NSView中有内容。我创建了popover并添加了这样的视图:

NSPopover *thePopover = [[NSPopover alloc] init];
[thePopover setContentViewController:myViewController];
然后我会显示弹出窗口并设置大小:

[thePopover setContentSize:NSMakeSize(300.0f, 160.0f)];

此时弹出窗口可见,其内容视图正确。有没有办法让我可以在不关闭并重新显示的情况下调整popover的大小?

3 个答案:

答案 0 :(得分:10)

我能够通过回调通过委托协议启动弹出窗口的控制器并使用setContentSize:重置大小来实现此目的

答案 1 :(得分:1)

来自the documentation

  

设置内容视图控制器时,popover的内容大小设置为与内容视图的大小相匹配。

所以,弹出窗口内容视图的set the frame

答案 2 :(得分:0)

NSWindow有私有财产_popover,用于存储对NSPopover的引用。 您可以使用它从任意NSPopover访问NSViewController个实例(然后在其上调用setContentSize:),如下所示:

- (NSPopover *)popover
{
    NSWindow *window = self.view.window;
    NSPopover *popover = [window valueForKey:@"_popover"];
    return popover;
}