我有一个 NSWindow,里面有 2 个容器视图,都在一个 xib 中,如下所示:
在另一个 xib 中,我有一个侧边栏视图,由不同的视图控制器管理,如下所示:
当我将子视图添加到容器视图时,我会这样做:
self.sidebarViewController.view.frame = self.sidebarContainer.bounds;
[self.sidebarContainer addSubview:self.sidebarViewController.view];
当我构建并运行并调整此窗口的大小时,会发生以下情况:
容器正确跟踪其超级视图的高度,但侧边栏视图本身不跟踪容器的高度。
如何进行设置,以便在调整窗口大小时,sidebarVCs 视图的高度会跟踪容器的高度?
我想我已经这样解决了:
[self.sidebarViewController.view setTranslatesAutoresizingMaskIntoConstraints:NO];
NSLayoutConstraint *w = [NSLayoutConstraint constraintWithItem:self.sidebarViewController.view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant:150.0];
NSArray *c1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|"
options:0
metrics:nil
views:@{ @"view":self.sidebarViewController.view }];
[self.sidebarContainer addConstraints:c1];
[self.sidebarContainer addConstraint:w];
我仍然不明白为什么 autoresizemask 布局约束不会自动执行此操作,但我认为我更接近于理解这里的视图之间的关系。