调整NSWindow大小时自动调整所有视图的大小

时间:2012-09-17 23:17:58

标签: objective-c macos cocoa

当我调整NSWindow的大小时,我正在尝试调整NSViewController中的所有子视图。 NSWindow视图包含NSViewController.view作为子视图。我将autoResizing设置为YES,并将autoResizing mask设置为水平和垂直。

        [self.view setAutoresizesSubviews:YES];
    [background setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

然而,这种技术对我不起作用。请注意,我的所有组件都是通过代码而不是使用IB添加的。 所以我的问题是:

  • 我应该添加什么才能使其自动调整大小?
  • 我使用OpenGL绘制另一个视图。我是否需要针对新尺寸进行计算?当我将cocos2d用于另一个应用程序时,我不必担心计算。那么这里有类似的东西吗?

2 个答案:

答案 0 :(得分:2)

如果您希望UI组件响应布局更改,则需要在UI组件上设置布局约束。 在IB中,默认值不是您想要的,但它们可以在那里进行调整。

自动调整大小是个用词不当。根据预设的布局约束调整组件大小将是一个更好但更长的名称。

我猜没有免费的午餐。

答案 1 :(得分:0)

试试这个:

[self.window.contentView setAutoresizesSubviews:YES];

而不是

[self.view setAutoresizesSubviews:YES];

如果您仍需要调整子视图的大小或重新定位,可以在委托功能中执行此操作。

- (void)windowDidResize:(NSNotification *)notification{ 
}