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 回答