我目前正在使用 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;
}