所以我已经看过几次这个问题,但是没有找到解决我问题的答案。现在我基本上有MainMenu.xib,标签位于顶部,一个大的自定义视图和一个位于底部的按钮,用于切换自定义视图的子视图(见下图)。我已将窗口和自定义视图设置为在界面构建器中自动调整子视图,并且所有按钮,标签等都有将它们与视图侧面相关联的约束,但是当我调整窗口大小时,子视图的内容会执行没有调整大小。我认为自定义视图正在调整窗口大小,因为当我使用按钮切换子视图时,加载的子视图会随窗口调整大小,它们只是没有实时调整窗口大小。
MainMenu.xib:
普通子视图:
扩展窗口后:
子视图切换然后切换回:
约束:
MainMenu.xib:
BlockViewController.xib:
答案 0 :(得分:5)
想出来!非常简单,每个ViewController子类的awakeFromNib方法中只有一行代码:
[self.view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
答案 1 :(得分:1)
从评论中的图片和描述看来,问题是自定义视图没有获得任何布局约束来确定如何调整子视图的大小。
以下代码(直接在浏览器中输入,请注意)应提供必要的约束,以将子视图的边框“粘合”到自定义视图。
[self.customView addSubview: self.blockSubView.view];
self.blockSubView.view.frame = self.customView.bounds;
NSView *blockSubView = self.blockSubView.view;
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(blockSubView);
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|[blockSubView]|"
options:0
metrics:nil
views:viewsDictionary];
constraints = [constraints arrayByAddingObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat:@"V|[blockSubView]|"
options:0
metrics:nil
views:viewsDictionary]];
[self.customView addConstraints: constraints];
docs中有更多相关内容。注意调试的技巧 - 非常有用,是必不可少的。