在我的OS X项目中,我为NSView编写了一个自定义视图控制器,它在一个单独的xib文件中定义。该视图包含使用自动布局定义的按钮和子视图。
现在我尝试以编程方式加载视图,并尝试将加载的视图作为子视图附加到拆分视图。
我创建了一个小帮手来设置约束
-(void)autoresizeConstraintsForSubview:(NSView*)subview inSuperview:(NSView*)superview {
[superview addConstraint:[NSLayoutConstraint constraintWithItem:subview
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeLeft
multiplier:1.0 constant:0]];
[superview addConstraint:[NSLayoutConstraint constraintWithItem:subview
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeRight
multiplier:1.0 constant:0]];
[superview addConstraint:[NSLayoutConstraint constraintWithItem:subview
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeTop
multiplier:1.0 constant:0]];
[superview addConstraint:[NSLayoutConstraint constraintWithItem:subview
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeBottom
multiplier:1.0 constant:0]];
}
- (void)windowDidLoad
{
[super windowDidLoad];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
// now load the detailed views.
self.chart1 = [[BTChartViewController alloc] initWithNibName:@"ChartView" bundle:nil];
[self.chart1.view setFrameOrigin:NSMakePoint(0, 0)];
[self.view1 addSubview:self.chart1.view];
[self.chart1.view setTranslatesAutoresizingMaskIntoConstraints:NO];
[self autoresizeConstraintsForSubview:self.chart1.view inSuperview:self.view1];
//[self.window visualizeConstraints:[self.chart1.view constraints]];
//[self.window visualizeConstraints:[self.view1 constraints]];
}
其中self.view1,self.view2是拆分视图中自定义视图的出口。此时不使用self.view2。 而self.chart1是一个工作视图控制器,它加载视图(一些图表)。
约束似乎乍一看,因为视图已加载,所有内容都会显示,图表也会完美显示。但是在将图表视图设置为子视图后,拆分视图将无法再调整大小。拆分视图的左侧区域是固定的,我无法再移动分割条。
如果我在界面构建器中设置所有内容,它可以完美地运行。我的目标是设置几个拆分视图,以便我有4个具有独立视图控制器的区域。
如何设置约束以不阻止调整大小行为? 子视图的显示大小始终是界面构建器中的“内在大小”。但是我希望子视图始终具有拆分视图的自定义视图的大小,并且能够调整拆分视图的大小。
有人知道这里出了什么问题吗?