我目前正在使用windowWillResize来控制我的一个窗口的纵横比与其中一个窗口的关系。一切似乎工作得很好,除了调整窗口大小也垂直移动,只是稍微调整,每次调整大小。使用setContentAspectRatio不会产生这个,但这对我来说不是一个选项,因为我在窗口中有其他视图。
关于为什么窗户可能会移动的任何想法,更重要的是,如果它是可以预防的?这是代码:
- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize
{
NSRect windowFrame = [self.window frame];
NSRect viewRect = [self.screen convertRect:[self.screen bounds] toView: nil];
NSRect contentRect = [self.window contentRectForFrameRect:windowFrame];
float marginY = viewRect.origin.y + windowFrame.size.height - contentRect.size.height;
float marginX = contentRect.size.width - viewRect.size.width;
frameSize.height = (frameSize.width - marginX) * HEIGHT_DEFAULT / WIDTH_DEFAULT + marginY;
return frameSize;
}
答案 0 :(得分:0)
我通过更改'frameSize'的宽度而非高度来修复此问题:
frameSize.width = (frameSize.height - marginY) / (HEIGHT_DEFAULT / WIDTH_DEFAULT) + marginX;
如果窗口缩小到负大小,这会产生一个奇怪的窗口调整大小的工件,但设置最小大小限制会修复它。