3

私の NSWindow の contentView は NSView サブクラスです。サブビューとして、他の NSView サブクラスがいくつかあります。サブビューはレイヤーベースであり、これらのレイヤーにはサブレイヤーが含まれています。一部のサブレイヤーには、さらにサブサブレイヤーがあります。

ウィンドウのサイズが変更されたときに、全体のサイズを比例的に変更したい。それが起こるように設定する正しい方法は何ですか?

ありがとう

編集:私は Interface Builder をまったく使用していません。

4

1 に答える 1

1

親ウィンドウのサイズを変更すると、NSView の内容が比例して拡大縮小されるようにするために行ったことは次のとおりです。まず、インターフェイス ビルダーで NSView をウィンドウに追加し、それへの参照を AppDelegate に追加しました。私のはたまたま呼ばれていscrollViewます。からすべての自動サイズ変更動作を削除しましたscrollView

次に、AppDelegate にこれを追加しました。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // keep the aspect ratio constant so that the content looks good
    [window setContentAspectRatio:NSMakeSize(2, 1)];
    window.delegate = self;
}

- (void)windowDidResize:(NSNotification *)notification {
    // size the scrollView to fill the window, but keep its bounds constant
    NSRect rect = [[window contentView] frame];
    NSRect oldBounds = [scrollView bounds];
    [scrollView setFrame:rect];
    [scrollView setBounds:oldBounds];
}

これにより、AppDelegate もウィンドウ デリゲートに変わります。私はそれに多くのロジックを持っていないので、結構です。フレームを変更しながら境界を一定に保つことで、 のコンテンツはscrollViewスムーズに縮小されます。

于 2011-01-09T22:11:55.510 に答える