0

現在、windowWillResizeを使用して、ビューの1つに対するウィンドウの1つのアスペクト比を制御しています。ウィンドウのサイズを変更すると、サイズが変更されるたびにウィンドウがわずかに垂直方向に移動することを除いて、すべてが正常に機能しているように見えます。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 に答える