1

我正在尝试将 NSWindow 调整为特定大小:

NSRect frame = [_window frame];

frame.size.width = 1024;
frame.size.height = 768 + 42; // add 42 for window frame

[_window setFrame: frame display: YES];
[_window center];

调整后的高度总是在 Mac OS X 应用程序停靠点处剪裁,所以在我的情况下,窗口高度内的视图不会是 768 而是 680。有没有办法强制它调整超出停靠点的大小?

4

1 回答 1

2

通过实现一个子类来覆盖constrainFrameRect:toScreen 来修复它:

- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen
{
    return frameRect;
}

来自 Mac 开发人员库,NSWindow 类参考,constrainFrameRect:toScreen:

如果窗口可调整大小并且窗口的高度大于屏幕高度,则矩形的高度也会调整为适合屏幕。矩形的宽度和水平位置不受影响。您不需要自己调用此方法;每当标题为 NSWindow 的对象被放置在屏幕上并且其大小发生更改时,它都会自动调用(并且修改的框架用于定位和设置窗口的大小)。 子类可以重写此方法以防止它们的实例受到约束或以不同的方式约束它们。

于 2013-06-24T13:55:12.787 回答