Swift NSPopover设置contentViewController更改动画和更改popover大小

Swift NSPopover设置contentViewController更改动画和更改popover大小,swift,macos,cocoa,appkit,nsviewcontroller,Swift,Macos,Cocoa,Appkit,Nsviewcontroller,我正在制作一个nspover,这样我就可以使用父视图控制器在具有滑动动画的视图控制器之间进行转换,并将我的视图控制器作为子视图控制器。它工作得很好,除了在我添加这个之前,popover自动调整到我视图的大小,但是现在,popover被固定在一个固定的大小 用于创建popover的代码: self.homeVC = PopoverViewController(nibName: "PopoverViewController", bundle: nil) self.loginVC =

我正在制作一个nspover,这样我就可以使用父视图控制器在具有滑动动画的视图控制器之间进行转换,并将我的视图控制器作为子视图控制器。它工作得很好,除了在我添加这个之前,popover自动调整到我视图的大小,但是现在,popover被固定在一个固定的大小

用于创建popover的代码:

    self.homeVC = PopoverViewController(nibName: "PopoverViewController", bundle: nil)
    self.loginVC = SignInViewController(nibName: "SignInViewController", bundle: nil)

    self.containerView.view.wantsLayer = true

    self.containerView.view.frame = self.homeVC!.view.bounds

    self.containerView.addChildViewController(self.homeVC!)

    self.containerView.view.addSubview(self.homeVC!.view)

    popover.contentViewController = self.containerView
用于转换视图控制器的代码:

    self.loginVC!.view.frame = self.homeVC!.view.bounds
    self.containerView.addChildViewController(self.loginVC!)

    let transition: NSViewControllerTransitionOptions = .SlideLeft

    self.containerView.transitionFromViewController(self.homeVC!, toViewController: self.loginVC!, options: transition, completionHandler: { finished in
        self.homeVC!.view.removeFromSuperview()
        self.homeVC!.removeFromParentViewController()
        self.containerView.view.bounds = self.loginVC!.view.bounds
    })
无论如何,我是否可以使popover自动调整到转换后的大小


提前感谢。

我没有显式地设置框架,而是通过设置约束使容器视图与子对象的大小相匹配来修复它

如果您只是将popover视图的框架设置为容器视图的场呢?@rocky很遗憾,这不是问题所在。popover确实与容器视图的大小匹配,但不注意容器视图的子级大小(使用约束设置)。我发现问题出在约束上,并解决了它。现在我使用约束设置popover的大小。谢谢你的建议。你能详细回答一下你到底改变了什么吗?