我正在尝试将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.有没有办法强制它在底座之外调整大小?
答案 0 :(得分:2)
通过实现一个子类来覆盖constrainFrameRect:toScreen:
来解决这个问题- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen
{
return frameRect;
}
来自Mac Developer Library,NSWindow Class Reference,constrainFrameRect:toScreen:
如果窗口可调整大小且窗口高度大于屏幕高度,则调整矩形的高度以适应屏幕。矩形的宽度和水平位置不受影响。您不应该自己调用此方法;每当标题为NSWindow的对象放置在屏幕上并且每当其大小发生变化时,它都会被自动调用(并且修改后的帧用于定位和设置窗口的大小)。 子类可以覆盖此方法,以防止其实例受到约束或以不同方式约束它们。