0

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

1 回答 1

0

我通过更改“frameSize”的宽度而不是高度来解决此问题:

frameSize.width = (frameSize.height - marginY) / (HEIGHT_DEFAULT / WIDTH_DEFAULT) + marginX;

如果窗口缩小到负大小,这会产生奇怪的窗口大小调整伪影,但设置最小大小限制可以解决此问题。

于 2012-11-07T16:26:07.363 回答