我有一个窗口并添加了一个子视图,这个子视图是另一个视图的容器(使用NSViewController
访问和添加)。
我已禁用自动布局并从弹簧调整大小。子视图在窗口调整大小时正确调整大小。
如果我添加/删除子视图保持窗口大小相同,它可以正常工作。但是,如果我添加子视图并最大化它然后删除然后添加,它会变得混乱。
有一段时间它直接发生在:
打开主窗口(以小尺寸打开)。最大化它,然后添加子视图,子视图添加到其在xib中绘制的原始大小。预期的行为是子视图应该扩展并覆盖主窗口。
我无法找到解决方案。请帮我解决这个问题。示例代码和sample project附在此处。
//In AppDelegate
- (IBAction)buttonClicked:(id)sender {
if (!self.myVC) {
self.myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
}
[self.containerView addSubview:self.myVC.view];
}
- (IBAction)clearClicked:(id)sender {
for (NSView *view in self.containerView.subviews) {
[view removeFromSuperview];
}
}
答案 0 :(得分:0)
我得到了答案,
在将视图添加到容器视图之前,我获取容器的矩形并设置子视图的框架。
- (IBAction)buttonClicked:(id)sender {
if (!self.myVC) {
self.myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
}
NSRect rect = NSMakeRect(0, 0, self.containerView.frame.size.width, self.containerView.frame.size.height);
[self.myVC.view setFrame:rect];
[self.containerView addSubview:self.myVC.view];
}