调整nspopover的大小

问题描述 投票:1回答:2

我试图通过使用以下方法设置它包含的NSView的框架来显示它之前调整NSPopover的大小:

setFrameSize:

但是,当我尝试通过调用以下方式显示popover时:

showRelativeToRect: ofView: preferredEdge:

视图返回其先前的大小。为什么会这样?还有另一种方法我应该调整popover吗?

提前谢谢,本。

resize nsview nspopover
2个回答
1
投票

popover上有一个setContentSize,但我觉得这个效果并不好。我的意思是它有效,但调整内容的大小(包括子视图)。因此,更好的方法是创建一个新的NSViewController并为其分配新视图。在NSPopover上设置此新控制器时,会正确地遵循该大小,如果当前显示弹出框,则它将设置为新视图的动画。

如果您不能这样做,而是想要调整内容的大小,请使用以下内容:

NSRect frame = valuePopupList.frame;
frame.origin = NSMakePoint(2, 2);

... determine new frame ...

NSSize contentSize = frame.size;
contentSize.width += 4; // Border left/right.
contentSize.height += 4; // Ditto for top/bottom.
if (contentSize.height < 26) {
    contentSize.height = 26;
}
valuePopupList.frame = frame;
statementsPopover.contentSize = contentSize;

[statementsPopover showRelativeToRect: area ofView: view preferredEdge: NSMaxXEdge];
valuePopupList.frameOrigin = frame.origin;

0
投票

您应该在弹出窗口包含的NSViewController中实现-preferredContentSize。这似乎是控制popover大小最可靠的方法。

© www.soinside.com 2019 - 2024. All rights reserved.