2

当弹出窗口显示时,如何根据条件检查使其大小可变?使用弹出框时是否支持此功能?

这是我更改帧大小的示例:

CGFloat newHeight = 200;
NSRect newFrame  = [parentView frame];
newFrame.size.height = newHeight;

NSView* childView = someView;

[parentView setFrame:newFrame];
[self.view addSubview:childView];
4

2 回答 2

3

不知道是否有任何更改,但在 10.9 中,您所要做的就是在弹出框上设置内容大小,例如:

[popoverView setFrame:NSMakeRect(0, 0, 581, 581)];
[thePopover setContentSize:popoverView.frame.size];
于 2013-12-14T20:38:38.960 回答
2

您需要将 的popupwindow.contentViewController属性更改为具有不同大小视图NSPopover的新属性。NSViewController也就是说,调整视图框架的大小只会导致奇怪的绘图问题。要使弹出窗口更改大小,contentViewController必须更改。

理想情况下,您将设置一个新的视图控制器,它本质上是您现有的副本NSViewController,但包含一个更高/更短的视图。但在最坏的情况下,您可以执行以下操作:

gPopoverWindow.contentViewController = [[[NSViewController alloc] initWithNibName: @"tempNibName" bundle: nil] autorelease];
NSView *v = self.view;
NSRect b = [v frame];
b.size.height += 25;
[v setFrame: b];
gPopoverWindow.contentViewController = self;

在我的测试中,这导致弹出框开始收缩动画(因为被设置为临时视图控制器),然后增长到新的大小。

于 2012-05-08T21:25:15.893 回答